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

时间:2014-11-14 20:10:21

标签: java hibernate spring-data

我有两张表说学生和老师,并且说学生与老师有多对一的关系,并且说,teacherId作为外键。

如果我想查询下面的内容,如何以某种方式使用Spring数据JPA repo方法 - findByTeacherName

select * from Student S, Teacher T 
    where T.teacherName = 'SACHIN' and S.teacherId = T.teacherId

注意:这里我想仅使用StudentRepository进行查询,StudentHibernateMapping是使用与TeacherHibernateMapping

有关系的{{1}}类创建的

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:41)

StudentRepository

上将有一个存储库方法
List<Student> findByTeacher_TeacherId(String teacherId);

你的entityClass应该像..

@Entity
Class Student {
  @Id
  String studentId;
  @ManyToOne
  private Teacher teacher;
}

和老师班将是..

@Entity
Class Teacher {
  @Id
  private String teacherId;
}

这里你需要知道的关键是:

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

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

答案 1 :(得分:3)

有很多方法可以做到这一点,阅读method naming约定解释嵌套属性的使用,或者使用@Query annotation更复杂的查询。

答案 2 :(得分:3)

关于@ prateek-singh的实体,也应该可以根据外部实体来定义没有id的查询。

List<Student> findByTeacher(Teacher teacher);