解決 No Hibernate Session bound to thread, and configuration does not allow。
阿新 • • 發佈:2019-02-05
錯誤原因: 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控制前單獨在一個包下,包掃描時只掃描這個包下的即可