multiscripter
@multiscripter

Как в JPA построить динамический запрос?

Всем привет.
Есть helloworld-проект на Spring + Hibernate.
Есть три сущности: Offer, Car и Brand. Описаны в hbm.xml.
Связаны они так: Offer.car и Car.brand.
Мне нужно получить все Offer по Brand.id.
В SQL это выглядит так: select * from offers, cars, brands where offers..car_id = cars.id and cars.brand_id = brands.id and brands.id = n;
Хочу запилить динамическое построение запроса, если известны только сущности на концах цепочки. Например, когда в цепочке E1.e2 -> E2.e3 -> . . . -> En.em -> Em известны только E1 и Em, а длина цепочки связанных сущностей не известна. Отсюда вопрос: есть ли какой-то готовый элегантный способ получить список сущностей? Или может можно сразу получить ResultSet?
Требуется избежать таких вещей как:
1. хардкодинг SQL через аннотацию @Query.
2. использование строковых констант с именами таблиц.
3. запиливание на каждый запрос отдельного метода findAll() в сервисе.
Использую JpaSpecificationExecutor.findAll(Specification)) и классы, расширяющие CrudRepository, JpaSpecificationExecutor.
  • Вопрос задан
  • 652 просмотра
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Criteria API.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@webartisan2
Как вариант querydsl
Ответ написан
Ваш ответ на вопрос

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

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