Java Spring Rest API自定义存储库

des4xlb0  于 2023-01-19  发布在  Java
关注(0)|答案(2)|浏览(131)

所以我有一个学生类@Table(name =“student”)公共类学生{

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
private String firstname;
private String lastname;
private String idnumber;
private String adress;
private boolean active=Boolean.TRUE;
@OneToMany( mappedBy="student")
private Set<Contact> contacts = new HashSet<>();
@ManyToMany(mappedBy = "students")
private Set<Team> teams = new HashSet<>();

}并且我有存储库
公共接口StudentRepository extends JpaRepository〈Student,Long〉{ }我想创建自定义存储库来查找学生id号,在创建新学生时,它将检查所有学生是否已经存在并抛出异常。

9jyewag0

9jyewag01#

您可以使用jpa存储库方法

studentRepo.findById(studentId)

获取数据库中studentId为的记录。如果你想让它找到该记录是否存在,你可以让该方法返回null,检查对象是否为null,并抛出相应的异常。如下面的例子所示。

Student student = studentRepo.findById(studentId).orElse(null);
if(student == null)
     throw new CustomException("student does not exist");
vvppvyoh

vvppvyoh2#

不需要创建一个新的repo作为customrepository来实现自定义查询。您可以编写一个新的方法来检索数据。

public interface StudentRepository extends JpaRepository<Student, Long> {

    // using JPA method
    Optional<Student> findByIdnumber(String idNumber);

    // using JPA query | this is an optional method in case you need to implement any query in future
    // ?1 represents the first parameter of the method, which is 'idNumber'
    @Query(value = "SELECT s.id FROM Student s WHERE s.idnumber=?1", nativeQuery = true)
    String findIdByIdnumber(String idNumber);
}

通过该服务,您可以检查记录是否可用,并执行相应的操作(抛出异常)。

相关问题