org.hibernate.LazyInitializationException: could not initialize proxy - the owning Session was closed
分析原因:
由于Spring控制的Hibernate的生命周期只针对数据层和服务层,而未管理到表现层,所以会出现the owning Session was closed的现象。针对这一点,我通过hibernate filter的方式来解决。
解决方法:
第一种:在web.xml中配置filter来解决。
<!--
hibernate session filter
-->
< filter >
< filter-name > hibernateFilter </ filter-name >
< filter-class > org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
</ filter-class >
</ filter >
< filter-mapping >
< filter-name > hibernateFilter </ filter-name >
< url-pattern > *.do </ url-pattern >
</ filter-mapping >
< filter >
< filter-name > hibernateFilter </ filter-name >
< filter-class > org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
</ filter-class >
</ filter >
< filter-mapping >
< filter-name > hibernateFilter </ filter-name >
< url-pattern > *.do </ url-pattern >
</ filter-mapping >
第二种:
lazy="false"
也可以在Service 或者 dao 层把lazy的Hibernate.initialize强制加载它.
<many-to-one>里面的属性lazy="false"
<set>里面的属性lazy="true"
<one-to-many>
</set>
<set>里面的属性lazy="true"
<one-to-many>
</set>