使用SSH框架進行開發的時候,由於延遲載入引起的no Session錯誤解決方法
阿新 • • 發佈:2018-11-12
問題產生的原因
當我們進行多表查詢的時候,連線的表往往會採用延遲載入的策略,我們的事物管理往往會放在Service層,當事物提交Session關閉後,在Action才會用到連線表中的資料,這時候再嘗試呼叫Session,獲取資料.但是Session已經關閉了,自然就會報出no session的錯誤.如何解決
Spring給出了非常成熟的解決方案 在web.xml中 struts2配置之前配置如下內容,即可解決問題<filter>
<filter-name>openSessionInView</filter -name>
<filter class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.class</filter-class>
</filter>
<filter-mapping>
<filter-name>openSessionInView</filter-name>
<url-pattern>/8*</url-pattern>
</filter -mapping>
如果使用的是Spring data 整合JPA的方法進行開發
web.xml配置如下 <filter>
<filter-name>openSessionInView</filter-name>
<filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
</filter>
<filter-mapping >
<filter-name>openSessionInView</filter-name>
<url-pattern>/*</url-pattern>