spring Could not obtain transaction-synchronized Session for current thread

spring | 2019-09-13 10:02:39

我的spring+hibernate出问题Could not obtain transaction-synchronized Session for current thread。
原本是不出问题的,因为我的dao bean都是配置在applicationContext.xml。然后通过ref给dao注入sessionFactory。
这样就没问题。

后来我把applicationContext.xml中的dao配置去掉了,直接在dao中用注解@Repository。

这下就出问题了,我不明白为什么在applicationContext.xml写配置就没问题,用了注解就有问题了。
后来查到解决方法:
在web.xml中增加配置:

<filter>
           <filter-name>SpringOpenSessionInViewFilter</filter-name>
           <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>
        </filter>
        <filter-mapping>
          <filter-name>SpringOpenSessionInViewFilter</filter-name>
          <url-pattern>*.action</url-pattern>
        </filter-mapping>


注意url-pattern不要配置为*。不要让所有访问都open session。

主要是让事务线程和视图线程进行绑定。

登录后即可回复 登录 | 注册
    
关注编程学问公众号