Java 如何使用SpringDataJPA存储库从2个表中进行查询?

Java 如何使用SpringDataJPA存储库从2个表中进行查询?,java,hibernate,spring-data,Java,Hibernate,Spring Data,我有两张表,分别是学生和老师,学生和老师之间有多对一的关系,教师ID作为外键 如果我想查询下面这样的内容,如何使用spring数据JPA repo方法 select * from Student S, Teacher T where T.teacherName = 'SACHIN' and S.teacherId = T.teacherId 注意:这里我只想使用StudentRepository进行查询,它是使用与TeacherHibernateMapping类有关系的Student

我有两张表,分别是学生和老师,学生和老师之间有多对一的关系,教师ID作为外键

如果我想查询下面这样的内容,如何使用spring数据JPA repo方法

select * from Student S, Teacher T 
    where T.teacherName = 'SACHIN' and S.teacherId = T.teacherId
注意:这里我只想使用
StudentRepository
进行查询,它是使用与
TeacherHibernateMapping
类有关系的
StudentHibernateMapping
类创建的


任何帮助都将不胜感激。

有很多方法可以做到这一点,请阅读解释嵌套属性使用的惯例,或者对于更复杂的查询,请使用。

StudentRepository上将有一个存储库方法

List<Student> findByTeacher_TeacherId(String teacherId);
老师的课是

@Entity
Class Teacher {
  @Id
  private String teacherId;
}
在此,您需要了解的关键是:

findBy+(带大写首字母的学生类的外键成员)+下划线+带大写首字母的教师类的数据成员+(字符串teacherId)


这将为您提供一个属于该教师的学生列表,关于@prateek singh的实体,您还可以通过外部实体定义一个没有id的查询


List findbytacher(教师)

谢谢@zoran。特别是,我只想了解是否支持类似于在where子句中组合两个表的等价项,例如,
findbytacheridandstudentid
。不过,我知道它可以与NativeSQl一起使用。这对我也适用,还有Prateek Singh提供的一个。很好的解决方案。我想知道这种方法是否有文档记录。到目前为止我还没找到。嗨,凉州,给你。。我们甚至不需要在方法中添加
下划线。。例如:
List findByTeacherTeacherId(字符串teacherId)这也会起作用。
@Entity
Class Teacher {
  @Id
  private String teacherId;
}