生成外键字段的JPA查询

时间:2018-10-23 21:31:54

标签: java database spring-boot spring-data-jpa

我正在尝试使用教师ID获取学生列表,这是使用Student生成的@JoinColumn表中的外键,但有错误。

Student.java类字段关系:

@ManyToOne(fetch = FetchType.LAZY) 
@JoinColumn(name = "teacher_id", nullable=false)
private Student student;

Teacher.java类字段关系:

@OneToMany(
        mappedBy = "student",
        cascade = CascadeType.ALL,
        orphanRemoval = true
)
private List<Student> StudentsList = new ArrayList<>();

StudentResource.java

@GetMapping("/student/details/{teacherId}")
@Timed
public List<Student> getStudentDetails(@PathVariable Long teacherId) {
    log.debug("REST request to get Student details: {}", teacherId);
    List<Student> studentDetails= studentRepository.findByTeacherID(teacherId);
    return studentDetails;
}

StudentRepository.java

List<Student> findByTeacherID(Long teacherId);

有没有一种方法可以直接映射字段而不是整个对象?

1 个答案:

答案 0 :(得分:0)

  

有没有一种方法可以直接映射字段而不是整个对象?

假设Student的代码看起来像人们期望的那样 * ,而不是像您发布的那样,它应该可以工作:

@Query("select s.id from Student s where s.teacher.id = :id") 
List<Long> findByTeacherId(Long id);

* Student具有引用teacher的属性Teacher和类型id的名为Long的id属性。