У меня есть лицо, Клиент, Автомобиль:
@Entity
public class Customer{
List<Car> cars;
...
}
@Entity
public class Car{
List<Customer> previousOwners;
...
}
В основном Клиент может арендовать несколько автомобилей, и Автомобили помнят предыдущих владельцев.
Оба объекта имеют больше отношений, и яЯ опускаю их.
Теперь хочу получить все автомобили Клиента:
public List<Car> getCars(int customerId) {
List<Car> cars= new ArrayList<>();
Transaction tx = null;
try (Session session = HibernateUtil.getSessionFactory().openSession()) {
tx = session.beginTransaction();
cars= (List<Car>) session.createQuery("SELECT cars FROM Customer u JOIN u.cars cars WHERE u.id IN :ids ").setParameter("ids", customerId).list();
} catch (HibernateException e) {
if (tx != null) tx.rollback();
e.printStackTrace();
}
return cars;
}
Это вернет список автомобилей, мне нужно использовать JOIN, потому что lazyinitialization установлено в FALSE.
Теперь я хочу получить Автомобили и их прежних владельцев.Но я не могу придумать ни одного запроса, я попытался использовать:
"SELECT cars FROM Customer u JOIN u.cars cars JOIN u.cars.previousOwners previousOwners WHERE u.id IN :ids "
, но это ничего не дало.
Я собираюсь вернуть объект Car со спискомвнутри , когда я пытался использовать
"SELECT cars, cars.previousOwner FROM Customer u JOIN u.cars cars JOIN u.cars.previousOwner previosOwner WHERE u.id IN :ids "
, он возвращал список предыдущих владельцев, но не внутри объекта Car, а как второй элемент в возвращаемом списке ...
Как я могусоздать такой запрос?Спасибо за помощь!