Всем привет.
Есть 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.
Если у вас в сущностях уже описаны связи(в т.ч. mappedby), можете просто из класса сущности бренда получить автомобили, из них уже офферов. Вариант возможно не самый эффективный, но все максимально автоматизировано.