У меня большие проблемы с работой OpenSessionInViewFilter с использованием Spring 3.0.2, hibernate3 и jsf2.
сценарий:
есть BusinessCaseEntity с несколькими простыми информационными свойствами(типа string и int) и список сопоставленных EmployeeEntities.Этот список отображается с помощью
fetch = FetchType.LAZY
. Прежде всего, я загружаю список всех BusinessCases и показываю их в таблице.для этой цели я использую класс дао.бизнес-шкафы с их простыми свойствами отображаются.если я выбираю конкретный бизнес-случай, я хочу, например, показать подключенных сотрудников.поэтому я просто хочу использовать метод get для объекта businesscase -> getEmployees ()
, с моим простым пониманием Spring и Hibernate, я знаю, что BusinessCaseEntity в это время отделен от любого Spring и Hibernate (session) в бэкэнде, и появляется известное исключение LazyLoadingException.
именно здесь я думаю, что OpenSessionInViewFilter приходит на место.я прочитал много инструкций о том, как его использовать, но мне все еще не удавалось заставить его работать в моем приложении.
настроил фильтр в моем web.xml, и я сделал небольшой подкласс OpenSessionInViewFilter изПришло время сделать некоторые выходные данные для отладки.
тем не менее, когда дело доходит до точки для извлечения требуемых данных, фильтр открывает новый сеанс, затем генерируется исключение LazyLoadException, а затем фильтр закрывает сеанс.почему существует LazyLoadException, когда сессия в настоящее время открыта?
2011-06-14 19:19:49,734 DEBUG HibernateFilter:239 - Using SessionFactory 'sessionFactory' for OpenSessionInViewFilter
2011-06-14 19:19:49,734 DEBUG HibernateFilter:66 - Opening single Hibernate Session in OpenSessionInViewFilter
Jun 14, 2011 7:19:49 PM com.sun.facelets.FaceletViewHandler handleRenderException
SEVERE: Error Rendering View[/web/caseDetails.xhtml]
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.frivak.cat.db.entities.BusinessCaseEntity.caseClientList, no session or session was closed
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:383)
LOTS OF STACKTRACE ...
2011-06-14 19:19:49,879 DEBUG HibernateFilter:92 - Closing single Hibernate Session in OpenSessionInViewFilter
Могу ли я как-то неправильно понять цель OpenSessionInViewFilter?
Я совершенно потерян и буду очень признателен за помощь.
спасибо - Крис