Похоже, что базовые запросы не работают, когда элементы коллекции имеют собственные коллекции.
Представьте себе модель данных для банка с клиентами, у которых есть портфели, у которых есть инвестиции. Как правильно привлечь клиентов?
Я пробовал это:
@Query("SELECT DISTINCT c FROM Customer c LEFT JOIN FETCH c.portfolios")
Но это не удается с «Не удалось лениво инициализировать набор ролей».
Инвестиции определяются как:
@ManyToMany(cascade = CascadeType.ALL)
Запрос будет работать, если я изменю fecthType:
@ManyToMany(cascade = CascadeType.ALL, fetch=FetchType.EAGER)
Но есть ли способ заставить его работать без изменения типа выборки?
РЕДАКТИРОВАТЬ:
Я должен упомянуть, что я использовал Spring JpaRepository для определения вышеуказанного запроса. У всех сущностей есть соответствующие репозитории, но похоже, что извлечение клиентов не затрагивает какие-либо методы в репозитории портфелей (которые оставили бы СОЕДИНЕНИЕ с инвестициями), поэтому инвестиции никогда не извлекаются.
Кроме того, я могу получить портфель с помощью аналогичного запроса, и он отлично работает, поскольку у инвестиций нет коллекций. Но получить цепочку клиентов -> портфели -> инвестиции не удается.