@UNy

Как выполнить Join запрос в Hibernate/Spring Data?

Что делать если информация которую я хочу показать лежит в нескольких таблицах? Как сделать join запрос в Hibernate или например Spring Data Jpa? Нашел пример такого кода:
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
	
List<Object[]> results = em.createQuery("SELECT p.firstName, p.lastName, n.phoneNumber FROM Person p, PhoneBookEntry n WHERE p.firstName = n.firstName AND p.lastName = n.lastName").getResultList();

for (Object[] result : results) {
	log.info(result[0] + " " + result[1] + " - " + result[2]);
}

em.getTransaction().commit();
em.close();

Список из массивов Object и получение по индексу выглядит мягко говоря странно :) Какие есть еще варианты? Читал про DTO, выглядит логично но напрашивается вопрос: если приложение состоит из кучи сущностей, DTO тоже будет немало?
  • Вопрос задан
  • 829 просмотров
Решения вопроса 1
BorLaze
@BorLaze
Java developer
То, что тебе нужно, называется projection https://www.baeldung.com/spring-data-jpa-projections

И, в общем-то, да - сколько будет запросов с разными данными, столько DTO надо будет создать - репозитарию-то надо знать, какого типа объект строить.

Или же, да - List, поскольку другого варианта вернуть нетипизированные данные нет.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы