Внезапно "не удалось лениво инициализировать коллекцию ролей ...: ни один сеанс или сеанс не был закрыт" - исключение - PullRequest
1 голос
/ 18 марта 2011

в приложении, которое работает в течение некоторого времени без каких-либо изменений, я получил исключение

failed to lazily initialize a collection of role: ... , no session or session was closed

Что может быть возможной причиной, вдруг?Метод, в котором это происходит, проверен и успешно применяется в течение последних 3 лет.

Спасибо за помощь, al

PS Среда: JSP, Spring, Hibernate, MySQL

Ответы [ 2 ]

9 голосов
/ 18 марта 2011

Если вы обойдете сущность и в конце концов выйдете из границы транзакции, где она была прочитана, вы не сможете получить доступ к какой-либо еще не инициализированной ассоциации (я полагаю, что у вас что-то вроде Collection<Role> roles). Если вы затем получите доступ к roles, Hibernate может попытаться инициализировать его, но поскольку транзакция (и сеанс Hibernate с ней) уже закрыты, вы получите это исключение.

Метод, в котором это происходит, проверен и успешно применяется в течение последних 3 лет.

Это может означать, что случай, когда коллекция не инициализируется при вызове этого метода, является редкой и не происходила в течение последних 3 лет.

1 голос
/ 18 марта 2011

Попробуйте использовать настройку Open Session In View в web.xml.Это поможет, если вы пытаетесь отправить объекты гибернации в весеннее представление MVC и вернуть его обратно.

Два варианта.

  • Загрузка всех отложенных коллекций перед закрытием сеанса гибернации или
  • Использование параметра OpenSession In View в web.xml
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...