failed to lazily initialize a collection of rlife.SchoolNews.NewsType no session or sessiion closed
2015-01-16 18:59
483 查看
在SSH项目中整合WebService接口时报错:failed to lazily initialize a collection of role com.edulife.SchoolNews.NewsType no session or session closed;
解决方法如下:
1. 把一对多的lazy=true改为lazy=false(我使用的是注解,使用fetch=“fetchType.EAGER”正确,因影响性能所以未考虑此方法);
2. 对于查询中如果用的是xxx.load(class,id)则改为xxx.get(class,id);(未测试,不清楚);
3. 在web.xml文件中加入:
<filter>
<filter-name>hibernateFilter</filter-name>
<filter-class>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
</filter-class>
<init-param>
<param-name>singleSession</param-name>
<param-value>false</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>hibernateFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping> <!-- 据说<init-param>一定要加,否则可能报错。还有就是hibernateFilter的顺序有影响,hibernateFilter > actionContextCleanUp > filterDispatcher
另外,我本人在使用此方法修改时还会报同样的错,此时将<url-pattern>*.do</url-pattern>中的 *.do 修改为 /* 即可 -->
注意:还有种多对多 / 一对多的情况,出现异常:
Caused by: com.sun.istack.SAXException2: 在对象图中检测到循环。这将产生无限深的 XML;
使用注解:@XmlTransient 注解关联的另外一方的 getter 方法,表示不生成这个对象的 Xml 文档;
解决方法如下:
1. 把一对多的lazy=true改为lazy=false(我使用的是注解,使用fetch=“fetchType.EAGER”正确,因影响性能所以未考虑此方法);
2. 对于查询中如果用的是xxx.load(class,id)则改为xxx.get(class,id);(未测试,不清楚);
3. 在web.xml文件中加入:
<filter>
<filter-name>hibernateFilter</filter-name>
<filter-class>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
</filter-class>
<init-param>
<param-name>singleSession</param-name>
<param-value>false</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>hibernateFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping> <!-- 据说<init-param>一定要加,否则可能报错。还有就是hibernateFilter的顺序有影响,hibernateFilter > actionContextCleanUp > filterDispatcher
另外,我本人在使用此方法修改时还会报同样的错,此时将<url-pattern>*.do</url-pattern>中的 *.do 修改为 /* 即可 -->
注意:还有种多对多 / 一对多的情况,出现异常:
Caused by: com.sun.istack.SAXException2: 在对象图中检测到循环。这将产生无限深的 XML;
使用注解:@XmlTransient 注解关联的另外一方的 getter 方法,表示不生成这个对象的 Xml 文档;
相关文章推荐
- JPA中的failed to lazily initialize a collection of role:xxxx no session or session was closed异常分析与解决
- failed to lazily initialize a collection of role: no session or session was closed (Hibernate) 解决方法(延迟加载问题)
- failed to lazily initialize a collection of role: XXXXXXXX no session or session was closed
- failed to lazily initialize a collection of role: XXXXXXXX no session or session was closed
- failed to lazily initialize a collection of role:XXX, no session or session was closed解决方法
- Failed to lazily initialize a collection - no session or session was closed
- Hibernate/Spring: failed to lazily initialize - no session or session was closed
- spring no session or session was closed,org.hibernate.LazyInitializationException: failed to lazily
- 【Hibernate】failed to lazily,no session or session was closed,OpenSessionInViewFilter不生效
- org.hibernate.LazyInitializationException: failed to lazily initialize no session or session was clo
- FetchType.LAZY 时属性加上@JsonIgnore,避免返回时报错:Could not write JSON: failed to lazily initialize a collection of role
- Hibernate 延迟加载的错误 failed to lazily initialize a collection of role [Hibernate]
- JPA中多对多关联延迟加载问题,failed to lazily initialize a collection of role
- failed to lazily initialize a collection of role
- failed to lazily initialize a collection of role
- hibernate 延迟加载的错误 failed to lazily initialize a collection of role
- failed to lazily initialize a collection of role
- 使用ssh框架时出现 failed to lazily initialize 或者 no session 异常
- hibernate 延迟加载的错误 failed to lazily initialize a collection of role
- failed to lazily initialize a collection of role