我正面临一个懒惰的加载异常,我无法弄明白。 首先,我从实体管理器中获取一个通常的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上。
答案 0 :(得分:0)
LazyLoadingException
标识您在没有事务的情况下尝试从db获取数据。请尝试使用@TransactionAttribute
注释,以确保在事务中运行if (object instanceof Collection ) {
块。
答案 1 :(得分:0)
您使用的是EJB Bean吗?当您离开交易时,您的实体对象将被分离。因此,您无法加载任何依赖实体(延迟加载)。您可以将扩展持久性上下文实体管理器与有状态会话Bean一起使用。然后,您可以在事务外使用延迟加载。并且您的实体与数据库保持同步。