У меня есть класс Booking, в нем также есть список Product.
В Product есть TrainBooking, а в TrainBooking есть список TrainJourney. >
Я использую конструктор критериев для получения бронирований.
Код: Выделить всё
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery query = cb.createQuery(Object[].class);
Root bookingRoot = query.from(Booking.class);
initializeJoins(bookingRoot);
Order orderParam = getOrderParam(request, cb, bookingRoot);
Fetch productFetch = bookingRoot.fetch("products", JoinType.LEFT);
Fetch
trainBookingFetch = productFetch.fetch("trainBooking", JoinType.LEFT);
productFetch.fetch("provider", JoinType.LEFT);
Fetch trainJourneyFetch = trainBookingFetch.fetch("trainJourneys", JoinType.LEFT);
trainJourneyFetch.fetch("journey", JoinType.LEFT);
query.multiselect(bookingRoot, journeyJoin.get(DEP_DATE_STR))
.orderBy(orderParam)
.distinct(true)
.where(createPredicates(request, otaUser, cb, bookingRoot));
Подробнее здесь: https://stackoverflow.com/questions/788 ... ia-builder