如何使用Spring Data JPA Repository从2个表中查询?

Har*_*yan 14 java hibernate spring-data

我有2个表说学生和老师,并说学生与老师有多对一的关系,并说,teacherId作为外键.

我怎样才能以某种方式使用spring数据JPA repo方法 - findByTeacherName如果我想查询下面的内容,

select * from Student S, Teacher T 
    where T.teacherName = 'SACHIN' and S.teacherId = T.teacherId
Run Code Online (Sandbox Code Playgroud)

注意:这里我只想使用查询StudentRepository,这是使用与StudentHibernateMapping类有关系的TeacherHibernateMapping类创建的

任何帮助将不胜感激.

Pra*_*ngh 49

StudentRepository上将有一个存储库方法

List<Student> findByTeacher_TeacherId(String teacherId);
Run Code Online (Sandbox Code Playgroud)

你的entityClass应该像..

@Entity
Class Student {
  @Id
  String studentId;
  @ManyToOne
  private Teacher teacher;
}
Run Code Online (Sandbox Code Playgroud)

和老师班将..

@Entity
Class Teacher {
  @Id
  private String teacherId;
}
Run Code Online (Sandbox Code Playgroud)

在这里,您需要知道的关键是:

findBy +(学生班的外键成员,第一个字母为Upper)+下划线+教师班的数据成员,第一个字母为UpperCase +(String teacherId);

这将为您提供属于该教师的学生列表


lil*_*nux 5

关于@ prateek-singh的实体,也应该可以完全由外部实体来定义不带id的查询。

List<Student> findByTeacher(Teacher teacher);


Zor*_*art 3

有很多方法可以做到这一点,阅读解释嵌套属性使用的方法命名约定,或者对于更复杂的查询使用@Query 注释