设置lazy=true时会出现如下错误:
原因是hibernate把session交给spring来管理。当action请求完后spring就把session给关掉了。 在jsp页面里想再去数据库里加载数据时,这个时候session已经关闭了。所以就报错了。
解决办法:
加入OpenSessionInViewFilter,即在View层打开Session
net.sf.hibernate.LazyInitializationException: Failed to lazily initialize a collection-no session or session was closed
原因是hibernate把session交给spring来管理。当action请求完后spring就把session给关掉了。 在jsp页面里想再去数据库里加载数据时,这个时候session已经关闭了。所以就报错了。
解决办法:
加入OpenSessionInViewFilter,即在View层打开Session
<filter>
<filter-name>hibernateFilter</filter-name>
<filter-class>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
<init-param>
<param-name>sessionFactoryBeanName</param-name>
<param-value>Spring配置中的SessionFactory名</param-value>
</init-param>
<init-param>
<param-name>singleSession</param-name>
<param-value>false</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>hibernateFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>