首页 > 解决方案 > 为外键字段生成 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);

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

标签: javadatabasespring-bootspring-data-jpa

解决方案


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

假设Student外观代码如预期的那样*而不是您发布的代码,这应该可以工作:

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

* ieStudent有一个teacher引用 的属性Teacher和一个名为idtype的 id 属性Long


推荐阅读