Как использовать Spring Data JPA Repository для запроса из 2 таблиц?

У меня есть 2 таблицы, которые говорят Студент и Учитель, и говорят, что у ученика есть отношение "Много-к-одному" к Учителю и говорят: teacherId служит в качестве внешнего ключа.

Как я могу использовать методы repo JPA для данных spring, в некотором смысле - findByTeacherName, если я хочу запросить что-то вроде ниже,

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

Примечание. Здесь я хочу запросить только StudentRepository, который создается с помощью класса StudentHibernateMapping, который имеет отношение к TeacherHibernateMapping class

Любая помощь будет очень благодарна.

Ответ 1

Будет создан метод репозитория на 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) + подчеркивание + элемент данных класса учителя с первой буквой UpperCase + (String teacherId);

это даст вам список учеников, принадлежащих этому учителю.

Ответ 2

Существует множество способов сделать это, прочитав соглашение имя метода, объясняющее использование вложенных свойств или для более сложные запросы используют @Аннотацию запроса.

Ответ 3

В отношении сущностей @prateek-singh также должно быть возможно определить запрос без id вообще, просто внешним объектом.

List<Student> findByTeacher(Teacher teacher);