Как использовать 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);