首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate Self-Join特例“Self failed to lazily... No Session”

Hibernate Self-Join特例“Self failed to lazily... No Session”
EN

Stack Overflow用户
提问于 2015-10-04 14:04:39
回答 1查看 75关注 0票数 2

错误“未能懒惰地初始化角色集合(...)无法初始化代理--没有会话”在中进行了广泛的讨论,但我想知道自连接(例如,经理/员工关系中的经理也是员工)是否是一种特殊情况。坦率地说,我对这个错误和对它的解释感到困惑,但我想我应该从这个“特殊情况”问题开始,因为在我看来,它可能是这样的,所以如何处理这个错误的答案可能不适用于自组织。我还会提到,我正在使用Spring MVC,当我试图向经理展示他们所有的员工时,就会出现错误。

EN

回答 1

Stack Overflow用户

发布于 2015-10-04 18:01:30

如果hibernate创建的实体对象是延迟加载的,就不能期望它在ServiceDAO层之外正常运行。这是因为这样的对象是由hibernate创建的代理,只有在代理与底层数据库(hibernate会话)保持连接的情况下,字段才会在需要时加载。一旦您离开ServiceDAO层,例如使用DAO层获取对象并尝试在控制器中使用它,该对象将断开连接,任何尚未获取的字段都将无法从数据库中获取数据。此外,您将无法将对象保存回数据库(您可能会争辩说可以保存,但我不确定对于复杂对象是否可以正确地保存)。

解决方案是迫不及待地加载对象,这意味着在创建对象时,所有字段都应该由hibernate加载(这是一个开销很大的操作)。

(更好的)替代解决方案是将控制器中的逻辑移动到服务层。

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

https://stackoverflow.com/questions/32930538

复制
相关文章

相似问题

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