我们正在从Spring 3迁移到Spring 4,同时引入EntityManager。在代码的前面,我们在带有urlmapping的bean中使用OpenSessionInViewInterceptor
作为拦截器。通过将会话附加到Web的每个线程请求,它工作正常。
现在,我正在使用OpenEntityManagerInViewInterceptor
,但是EntityManager
未附加到当前线程,并获取异常
没有可用于当前线程的实际事务的EntityManager-无法可靠地处理“持久”调用
如果将@Transactional
放在我的DAO方法之上,那么它可以正常工作,但是我将不得不在很多地方使用它,因此要避免使用它,并尝试使用OpenEntityManagerInViewInterceptor
对其进行修复。请让我知道如何使它工作。
applicationContext.xml-
<bean id="openEntityManagerInViewInterceptor" class="org.springframework.orm.jpa.support.OpenEntityManagerInViewInterceptor">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
dispatcher-servlet.xml-
<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/EditHelp/*.do">EditHelpController</prop>
</props>
</property>
<property name="interceptors">
<list>
<ref bean="openEntityManagerInViewInterceptor" />
</list>
</property>
</bean>
任何帮助将不胜感激。谢谢。