2014-11-14 59 views
10

我有2个表格说学生和老师,并且说学生与老师有多对一的关系,并且说老师是外键。如何使用Spring Data JPA Repository从2个表中查询?

我如何可以使用Spring数据JPA回购方式,在某种程度上 - findByTeacherName,如果我想查询类似下面,

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

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

任何帮助将不胜感激。

回答

3

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

+0

谢谢@zoran。特别是,我只是想了解是否支持在where子句中组合2个表,如'findByTeacherIdAndStudentId'。但我知道它适用于NativeSQl。 – 2014-11-15 10:10:37

30

将有上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 +(学生类的外键成员,首字母大写Upper)+下划线+教师类的数据成员,第一个字母大写字母 +(String teacherId);

这会给你属于那个老师

2

关于@ prateek - 辛格的实体的学生名单,也应该尽可能不进行身份简单地由外国实体定义查询可言。

List<Student> findByTeacher(Teacher teacher);

相关问题