Запрос нескольких таблиц с использованием репозитория jpa

Предположим, если у меня есть 3 лица - User, Skills, Department и у меня есть репозитории, соответствующие всем им - UserRepository, SkillRepository, DepartmentRepository,

Я понимаю, что сопоставление отношений между сущностями, то есть один-один-много-много, должно быть указано в соответствующих классах сущностей. Вопрос в том, что я хочу использовать все 3 объекта в запросе. Как бы я это сделал? Один репозиторий связан только с одним объектом, верно? Итак, как / где бы я это написал?

1 ответ

Поскольку существует много разных способов задания запросов с помощью Spring Data JPA, на это есть разные ответы.

  1. Может быть, вам не нужно. Если сущность A Рекомендации B и вы просто хотите получить Bс твоим A вы просто используете свой ARepository загрузить Aи использовать навигацию по объектам, чтобы получить Bs. Вы могли бы прочитать о нетерпеливой и ленивой загрузке для получения дополнительной информации о том, как управлять этим.

  2. Если вы хотите ссылаться на сущности в условии where, вы можете использовать пути свойств в именах методов запроса: https://docs.spring.io/spring-data/jpa/docs/current/reference/html/

  3. Если вы используете @Query аннотации вы можете делать (почти) все, что вы хотите с JPQL. Помимо прочего, вы также можете перемещаться по свойствам, чтобы использовать их в предложениях where.

В общем случае вы помещаете этот запрос в соответствующий репозиторий на основе возвращенного основного объекта.

Другие вопросы по тегам