OpenEntityManagerInViewInterceptor-没有EntityManager,其实际事务可用于当前线程-无法可靠地处理“持久”调用

时间:2018-10-29 11:11:40

标签: java spring jpa

我们正在从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>

任何帮助将不胜感激。谢谢。

0 个答案:

没有答案