如何使用Spring Data JPA存储库从2个表中查询?

2022-09-02 00:05:49

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

我如何以某种方式使用spring数据JPA存储库方法 - ,如果我想查询如下内容,findByTeacherName

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

注意:这里我只想查询,这是使用与类有关系的类创建的StudentRepositoryStudentHibernateMappingTeacherHibernateMapping

任何帮助将不胜感激。


答案 1

学生存储库上将有一个存储库方法

List<Student> findByTeacher_TeacherId(String teacherId);

你的实体类应该是这样的。

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

和老师班将是..

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

在这里,您需要了解的关键是:

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

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


答案 2

关于@prateek-singh的实体,也应该可以在没有id的情况下定义查询,只需由外国实体定义。

List<Student> findByTeacher(Teacher teacher);


推荐