我看到的许多先前问题的主题 - 但不完全是这个问题。我理解Hibernates懒惰的抓取策略,开放式会话等等,但我似乎无法找到这个简单的小东西的解决方案,无论如何我的关联都是懒散的。
我没有在视图中使用开放会话,因为我的网络应用程序是在没有它的情况下构建的,现在要复杂化以“迁移”......
假设我们有一系列参考文献,例如 a< -b< -c< -d - > ë
通常,提取 a 也意味着我们需要 b,c 和 d 。所以这些设置总是急切地获取(通过在hibernate映射文件中指定lazy=false
)。这个工作!!
然而,我们现在还需要始终急切地获取关联 e ,每次获取时都是如此。由于 e 对于 d 执行某些逻辑操作至关重要。
这就是它停止工作的地方...... e 与 d 相关联,作为 d 上的多对一关联。将此设置为lazy=false
并不起作用,但仍未正确初始化,并且从 d 访问 e 上的属性会导致LazyInitialisationException。
我认为这会起作用是不对的?使用hibernate v.3.2.6和Spring版本2.5.6在hbm文件中指定了lazy属性。
希望有人可以为我澄清事情......
无论如何,如果找到,请参阅另一篇文章。我似乎无法找到一个覆盖这个......
答案 0 :(得分:3)
多对一关联的延迟属性在类元素中设置:
<class name="E" laze="false">
...
</class>
<class name="D">
<many-to-one name="e" .../>
</class>
多对一的lazy属性与任何属性具有相同的含义:它允许lazy loading of single properties,它仅在所有者本身是代理时才有效。这不是你可以在你的情况下使用的任何东西,无论如何它默认设置为假。