JPA и Hibernate Fetch игнорируют ассоциации?
Вопрос
У меня есть объект JPA (объект A) с отношением владения «один-многие» (объект B) в ArrayList.
Я хочу иметь возможность запрашивать (либо Hibernate, либо JPA) объект A без возврата каких-либо экземпляров объекта ассоциации B (без прокси или чего-либо еще) в One-Many ArrayList.
В идеале возвращаемый ArrayList должен быть нулевым или пустым.
Это возможно?В грубом псевдокоде это то, что я хочу:
«из ObjectA, где ObjectA.id=5 НЕ ВКЛЮЧАТЬ ObjectB»
или
«Выберите из ObjectA FETCH IGNORE a.ObjectBs, где a.id=5»
Решение
Если ассоциация для ObjectB в ObjectA является ленивой, ObjectB не будет возвращена с вашим запросом, если только ваш запрос не указывает на их получение.
Если бы вы получили доступ к каким-либо объектам ObjectB после закрытия сеанса, вы получили бы исключение LazyInitializationException, поскольку ваши объекты ObjectB не были загружены в память.