Hibernate ленивая загрузка в отдельных объектах

Я создал класс, в котором я установил некоторые из его полей (другие объекты) для ленивой загрузки. Теперь мне нужно использовать этот объект после его отсоединения от сеанса, поэтому мне, очевидно, нужно убедиться, что все поля, которые мне нужны, заполнены перед отсоединением. Я попытался просто вызвать геттеров на эти ленивые поля, но это, похоже, не сработало. У кого-нибудь есть идея, как заставить эти поля загружаться?

4 ответов


Hibernate.initialize(yourObject)

принудительно инициализирует объект / коллекцию, которая передается ему. Для этого нужен активный сеанс.

Если объект отсоединен, вам придется повторно присоединить объект (используя merge(..)) к активному сеансу, а затем инициализируйте его.


вы можете подключить его к сеансу. Это нормальный способ.

session.update(yourObject); //This reattachs the object to the current session.
yourObject.someGetter(); //This will work now.

<prop key="hibernate.enable_lazy_load_no_trans">true</prop> 

вы можете добавить эту строку в файл конфигурации,он может получить ваши ленивые объекты,даже если он отсоединен, но он должен использовать версию post 4.1.7, поскольку есть проблема с утечкой соединения с предыдущей версией.см.здесь


Я знаю, что вы просили Hibernate, но EclipseLink имеет эту функцию, поэтому, возможно, стоит проверить, используете ли вы JPA и не привязаны к данной реализации. Однако вы можете столкнуться с другими проблемами при переходе на EclipseLink..