首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate LazyInitializationException:延迟初始化角色集合失败

问Hibernate LazyInitializationException:延迟初始化角色集合失败
EN

Stack Overflow用户
提问于 2010-10-19 04:12:11
回答 1查看 2.6K关注 0票数 0

我有一个web服务,它本质上是DAO的包装器。我正在调用web服务/DAO来请求一个实体集合。

“父”实体类包含“子”实体对象的集合,即一对多关系。获取“父”实体集合(即myDAO.findAll())的DAO方法调用返回时没有问题,但是web服务调用的最终结果是这个异常:

代码语言:javascript
复制
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: Station.observations, no session or session was closed

一些背景信息:

我有两个实体: Station和Observations。工作站实体(“父”)包含一个Observations对象(“子”)的集合。

站点实体的DAO类StationDao具有用于被调用的方法findAll()的以下代码:

代码语言:javascript
复制
private SessionFactory sessionFactory;

private Class<T> persistentClass;

public List<T> findAll()
{
    return getCurrentSession().createQuery("from " + persistentClass.getName()).list();
}

在本例中,我对与父级(站)相关的子级(观察值)集合不感兴趣,因为在返回父级集合之前,父级(站)被完全获取。然而,似乎有人试图在响应中返回父(站)对象的集合之前完全获取这些子(观察值)对象,这是失败的,因为原始会话不再可用。

有没有人能建议我如何避免这个错误?也许有一种方法可以在请求的整个生命周期中保持会话?

提前感谢您的帮助!

--詹姆斯

EN

回答 1

Stack Overflow用户

发布于 2012-09-12 22:59:44

我曾经遇到过这样的情况:“懒惰地初始化角色集合失败”是由于在调用

代码语言:javascript
复制
HibernateTemplate.clear()

即使会话仍处于活动状态,旧对象也不活动。解决这个问题的一种可能的方法是再次从会话中获取对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3962984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档