使用OpenEntityManagerInViewFilter进行延迟初始化?

我有一点已经在使用JBoss webapp,以及一个懒惰的初始化问题。 因此我被建议在Spring中进行调查并使用OpenEntityManagerInViewFilter

不过我仍然得到错误,希望你能帮助我吗? 我还需要在应用程序中更改哪些内容才能使用Spring OEMfilter?

我的设置是这样的:

 @Entity class Customer; @Stateless @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) class DaoService { @PersistenceContext EntityManager em; } @Named @RequestScoped class CustomerFacade; 

+ jsf的东西。

 [javax.enterprise.resource.webcontainer.jsf.context] (http--127.0.0.1-8080-1) org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: domain.Customer.customerList, no session or session was closed 

我这样设置:web.xml

   OpenEntityManagerInViewFilter   org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter   singleSession true   flushMode AUTO     OpenEntityManagerInViewFilter /*    org.springframework.web.context.ContextLoaderListener   org.springframework.web.context.request.RequestContextListener  

applicationContext.xml中:

        org.hibernate.transaction.JBossTransactionManagerLookup     

persistence.xml中:

     java:jboss/datasources/ExampleDS        

这基本上就是所有的设置。 一切都与懒惰加载问题分开。

确保您不访问旧实体(例如,在先前请求中的会话中的序列化实体)。

有必要在init参数中指明EntityManager

   OpenEntityManagerInViewFilter   org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter   entityManagerFactoryBeanName entityManagerFactory   flushMode AUTO