1. 程式人生 > >使用SSH框架進行開發的時候,由於延遲載入引起的no Session錯誤解決方法

使用SSH框架進行開發的時候,由於延遲載入引起的no Session錯誤解決方法

問題產生的原因

當我們進行多表查詢的時候,連線的表往往會採用延遲載入的策略,我們的事物管理往往會放在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>