解决 No Hibernate Session bound to thread, and configuration does not allow。

错误原因: hibernate session未绑定到当前线程,或者更一般的说service层未增强事物控制。

解决办法:

1. 第一个可能原因,请注意匹配你的service方法开头,其他用 * 通配。

解决 No Hibernate Session bound to thread, and configuration does not allow。_第1张图片

2. 报这个错误一般你的框架是SSH , 及 springmvc spirng hibernate,

引用:http://blog.csdn.net/z69183787/article/details/37819831

Spring容器优先加载由ServletContextListener(对应applicationContext.xml)产生的父容器,而SpringMVC(对应mvc_dispatcher_servlet.xml)产生的是子容器。

子容器Controller进行扫描装配时装配的@Service注解的实例是没有经过事务加强处理,即没有事务处理能力的Service,

而父容器进行初始化的Service是保证事务的增强处理能力的。如果不在子容器中将Service exclude掉,此时得到的将是原样的无事务处理能力的Service。

所以为了让ServletContextListener加载的父容器对service进行事物加强,我们在用springmvc包扫描时排除service即可

ServletContextListener加载的父容器 application-context.xml

解决 No Hibernate Session bound to thread, and configuration does not allow。_第2张图片

org.springframework.web.servlet.DispatcherServlet 加载的子容器: application-mvc.xml


最后说一句: 第二中原因我们完全可以利用包结构避免,controller控制前单独在一个包下,包扫描时只扫描这个包下的即可


你可能感兴趣的:(javaWeb)