我得程序用到了一对多关联。在查询parent时候调用了children,就报failed to lazily initialize a collection of role:XXX, no session这个错。将lazy属性改为false依然报这个错误。
在开发Struts2.0+hibernate3.2+spring2.5项目过程中,遇到了failed to lazily initialize a collection of role: XXXXXX, no session or session was closed 这个异常的麻烦,起初到网上找资料,得到了下面的一些解决方法:
1、是把对应一对多的那两个列lazy=true改为lazy=false即可;
2、对于查询中如果用的是xxx.load(class,id)则改为xxx,get(class,id);
3、在web.xml文件中加入: 利用OpenSessionInViewFilter 详见opensessioninviewfilter这篇文章
<!-- OpenSessionInViewFilter -->
<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>/*</url-pattern>
</filter-mapping>