遇到报错 failed to lazily initialize a collection of role, no session or session was closed
就在web.xml里添加了OpenSessionInViewFilter,结果不生效。后来发现是没有配置init-param,因为之前认为这个属性是默认true。
正确改法:
web.xml
<filter>
<filter-name>OpenSessionInViewFilter</filter-name>
<filter-class>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
</filter-class>
<init-param>
<param-name>singleSession</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>OpenSessionInViewFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
虽然这个问题也可以把懒加载关闭,但是不是一劳永逸的方式。而且不喜欢把懒加载关闭增加数据库压力。
至于配置文件顺序问题导致无效,我没有遇到,可能是以为使用的SpringMVC的关系,在web.xml配置了ContextLoaderListener