我有两张表说学生和老师,并且说学生与老师有多对一的关系,并且说,teacherId作为外键。
如果我想查询下面的内容,如何以某种方式使用Spring数据JPA repo方法 - findByTeacherName
,
select * from Student S, Teacher T
where T.teacherName = 'SACHIN' and S.teacherId = T.teacherId
注意:这里我想仅使用StudentRepository
进行查询,StudentHibernateMapping
是使用与TeacherHibernateMapping
类
非常感谢任何帮助。
答案 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);