假设我有以下表
One Teacher to Many Student
Teacher
id (pk)
Student
id (pk)
teacher_id (fk)
name (string)
对于Spring,我为Teacher
和对应的TeacherRepository
创建了一个实体,Student
也是如此。
在JPA中,如何使用teacher.id
和student.name
检索Student
对象?
我可以使用带有原生查询的SQL语句来实现这一点,但我希望在维护对象关系的情况下实现这一点。
例如,使用id
和name
作为输入,我可以这样实现:
Teacher teacher = teacherRepository.findBy(id);
Set<Student> students= teacher.getStudents();
for (Student s : students) {
if (s.getName() == name)
return s;
}
但这样做的问题是findBy
不会对where Student.name=name
执行select
命令。JPA生成获取特定对象的SQL查询的方式是什么?
1条答案
按热度按时间d8tt03nd1#
要按字段查找JPA实体,您可以向存储库的接口添加一个方法,JPA将根据方法名称生成SQL查询
例如,要按teacherId和姓名查找唯一的学生,您可以编写
如果该值可以为空,则使用
find
代替get
https://www.baeldung.com/spring-data-derived-queries