1. 程式人生 > >解決 No Hibernate Session bound to thread, and configuration does not allow。

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

錯誤原因: hibernate session未繫結到當前執行緒,或者更一般的說service層未增強事物控制。

解決辦法:

1. 第一個可能原因,請注意匹配你的service方法開頭,其他用 * 通配。


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


org.springframework.web.servlet.DispatcherServlet

載入的子容器: application-mvc.xml


最後說一句: 第二中原因我們完全可以利用包結構避免,controller控制前單獨在一個包下,包掃描時只掃描這個包下的即可