【发布时间】:2011-09-28 14:10:51
【问题描述】:
我看到的许多先前问题的主题 - 但不完全是这个问题。我了解 Hibernates 延迟获取策略、open-session-in-view 等,但我似乎无法找到解决这个简单的小问题的解决方案,无论如何我的关联都是延迟获取的。
我没有在视图中使用开放会话,因为我的网络应用是在没有它的情况下构建的,现在“迁移”起来很复杂......
假设我们有一个引用链,比如 a e
通常,获取 a 也意味着我们需要 b、c 和 d。所以这些被设置为总是急切地获取(通过在休眠映射文件中指定lazy=false)。这工作!
但是,我们现在还需要总是急切地获取关联 e,每次获取 d 时。因为 e 对于在 d 上执行一些逻辑操作至关重要。
这就是它停止工作的地方... e 与 d 相关联,作为 d 上的多对一关联。将其设置为 lazy=false 并不能解决问题,它仍未正确初始化,并且从 d 访问 e 上的属性会导致 LazyInitialisationException。
期望这会奏效是不是我错了?使用 hibernate v. 3.2.6 和 Spring 版本 2.5.6 在 hbm 文件中指定惰性属性。
希望有人能帮我澄清一下……
无论如何,如果您找到另一篇文章,请参阅另一篇文章。我似乎找不到涵盖此内容的内容...
【问题讨论】:
标签: hibernate lazy-loading lazy-initialization