出现原因,懒加载fetch = FetchType.LAZY,当用到关联对象的非主键属性石,程序会再次查询数据库,但是这时候session已经关闭了,虽已报错。
解决方法呢,有两个:
1.不要使用懒加载,使用fetch = FetchType.EAGER这个
2.修改配置文件,使用spring提供的 OpenSessionInViewFilter,这个拦截器要配置在Structs2拦截器之前,否则系统会报错。
<filter>
<filter-name>osivFilter</filter-name>
<filter-class>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>osivFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Struts2 核心 过滤器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>