我正在尝试使用教师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);
有没有一种方法可以直接映射字段而不是整个对象?
答案 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属性。