Spring控制的Hibernate的生命周期只針對數(shù)據(jù)層和服務層,表現(xiàn)層就沒這個福分了還有就是只有在session沒有關閉的情況下運行Obj.getXxx()時才會執(zhí)行select語句從數(shù)據(jù)庫加載對象(這就是所謂的延遲加載)session已經(jīng)關閉,此時再運行Obj.getXxx()方法,Hibernate就會拋出"Could not initialize proxy - the owning Session was closeed"的異常。不過可以通過 org.springframework.orm.hibernate3.support.OpenSessionInViewFilter過濾器來彌補這一缺陷。在WEB.XML中加入以下內(nèi)容:
<filter>
<filter-name>hibernateFilter</filter-name>
<filter-class>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
</filter-class>
<!-- singleSession默認為true,若設為false則等于沒用OpenSessionInView -->
<init-param>
<param-name>singleSession</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>hibernateFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
==============如果還是不行則在DAO里加入Hibernate.initialize(Obj.getXxx());