Запрос нескольких таблиц с использованием репозитория jpa
Предположим, если у меня есть 3 лица - User
, Skills
, Department
и у меня есть репозитории, соответствующие всем им - UserRepository
, SkillRepository
, DepartmentRepository
,
Я понимаю, что сопоставление отношений между сущностями, то есть один-один-много-много, должно быть указано в соответствующих классах сущностей. Вопрос в том, что я хочу использовать все 3 объекта в запросе. Как бы я это сделал? Один репозиторий связан только с одним объектом, верно? Итак, как / где бы я это написал?
1 ответ
Поскольку существует много разных способов задания запросов с помощью Spring Data JPA, на это есть разные ответы.
Может быть, вам не нужно. Если сущность
A
РекомендацииB
и вы просто хотите получитьB
с твоимA
вы просто используете свойARepository
загрузитьA
и использовать навигацию по объектам, чтобы получитьB
s. Вы могли бы прочитать о нетерпеливой и ленивой загрузке для получения дополнительной информации о том, как управлять этим.Если вы хотите ссылаться на сущности в условии where, вы можете использовать пути свойств в именах методов запроса: https://docs.spring.io/spring-data/jpa/docs/current/reference/html/
Если вы используете
@Query
аннотации вы можете делать (почти) все, что вы хотите с JPQL. Помимо прочего, вы также можете перемещаться по свойствам, чтобы использовать их в предложениях where.
В общем случае вы помещаете этот запрос в соответствующий репозиторий на основе возвращенного основного объекта.