重新附加和延迟加载异常

时间:2010-12-17 11:15:36

标签: java hibernate

我正面临一个懒惰的加载异常,我无法弄明白。 首先,我从实体管理器中获取一个通常的find方法。之后我运行方法,其中一部分是:

object = getUnproxiedValue(object);
if (object == null) {
    ... // this part is not run
    return;
}
if (object instanceof Collection ) {
    ... // and I fall here with lazy load exception
    return;
}

getUnproxiedValue假设在参数对象是代理时给出对象,初始化(加载)代理并返回未包装的对象。出现问题时,如果有一个集合,有时它会因为延迟加载异常而死亡,因为对象为空,那么为什么第一个条件不起作用呢?

对于任何线索和提示,请提前感谢您,我非常感谢您的支持。

此致 P上。

2 个答案:

答案 0 :(得分:0)

LazyLoadingException标识您在没有事务的情况下尝试从db获取数据。请尝试使用@TransactionAttribute注释,以确保在事务中运行if (object instanceof Collection ) {块。

答案 1 :(得分:0)

您使用的是EJB Bean吗?当您离开交易时,您的实体对象将被分离。因此,您无法加载任何依赖实体(延迟加载)。您可以将扩展持久性上下文实体管理器与有状态会话Bean一起使用。然后,您可以在事务外使用延迟加载。并且您的实体与数据库保持同步。