Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Hibernate - Lazy


Автор: belarusrulez 28.12.2010, 18:52
Exception:
Код

hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.logicway.cdshop.bean.CD.genres, no session or session was closed


filter in web.xml
Код

<filter>
        <filter-name>OpenSessionInViewFilter</filter-name>
        <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>OpenSessionInViewFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>


если поставить (fetch = FetchType.EAGER) то всё работает на ура ...

help! ;)

Автор: dobrolub 1.1.2011, 10:22
fetch EAGER даёт инструкцию hibernate тянуть хозяйство (роли, в твоём случае) за собой сразу. Поэтому, при обращении к ролям исключительной ситуации не возникает. 

Исключительная ситуация (в отсутствии EAGER) возникает потому, что сессия закрыта. Проверь свой код на предмет закрытия сессии до обращения к списку ролей.


Автор: _sten_ 1.1.2011, 17:24
OpenSessionInViewFilter открывает сессию при начале риквеста, привязывает ее к текущему потоку, и закрывает при окончании. В таком случае LazyInitializationException быть не должно, разве что ты закрыл сессию сам, или обращаешься к коллекции из другого потока.

Автор: belarusrulez 12.1.2011, 16:39
Была такая ситуация как у коллекции 2 
1. страница 1 подгружает обьект в котором есть 2 коллекции: коллекция_1 (используется на странице 1 и соответсвенно подгружается) и коллекция_2 (не используется на странице 1 и соответсвенно не подгружается)
2. я заношу этот объект в сессию
3. перехожу на страницу 2 в которой требуется коллекция_2 и при попытки подгрузки этой коллекции мне выдаёт LazyException
Методом борьбы от этого является подгрузка данного обьекта для каждой страницы отдельно. Значит не имеет смысла тягать в сессии объекты т.к. можно тягать только ID(ведь они легче и нужны только они)

разобрался.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)