以前我发布了一个关于* LazyIntialization 异常的解决方案的问题:找不到代理 - 会话已关闭*。但后来在我的代码中,我发现我使用 load() 方法而不是 get() 方法来检索实体对象。所以我将 load() 方法更改为 get() 并开始工作。
下面是代码片段,
Answer answerObj = HibernateTemplate.load(Answer.class,1001); --> line 1
answerObj.setPoints(2990); --> line 2
当我运行它时,它抛出了 LazyInitialization 异常:在第 2 行找不到代理。
我知道当我使用 load() 方法时,它会返回我的代理对象而不是数据库中的持久行。所以我的 Answer 对象只有 Id 值,所有其他属性都是空的。
现在在代码的第 2 行中,我试图将代理对象的 (Answer) 属性之一设置为某个值。那为什么它会抛出代理不可用异常?将值分配给代理对象属性有什么问题?