1

我看到的许多先前问题的主题-但与此不完全一样。我了解 Hibernates 延迟获取策略、open-session-in-view 等,但我似乎无法找到解决这个简单的小问题的解决方案,无论如何我的关联都是延迟获取的。

我没有使用开放会话,因为我的网络应用程序是在没有它的情况下构建的,现在“迁移”起来很复杂......

假设我们有一个引用链,比如a <- b <- c <- d -> e
通常,获取a也意味着我们需要b、cd。所以这些被设置为总是急切地获取(通过lazy=false在休眠映射文件中指定)。这有效!

但是,我们现在还需要总是急切地获取关联e,每次获取 d 。因为e对于在d上执行一些逻辑运算至关重要。

这就是它停止工作的地方...... ed相关联,作为d上的多对一关联。将此设置为lazy=false不起作用,它仍未正确初始化,并且从d访问e上的属性会导致 LazyInitialisationException。

我期望这会奏效是错误的吗?惰性属性是在使用 hibernate v. 3.2.6 和 Spring 版本 2.5.6 的 hbm 文件中指定的。

希望有人可以为我澄清事情......

无论如何,如果你找到了,请参考另一篇文章。我似乎找不到一个涵盖这个...

4

1 回答 1

3

多对一关联的惰性属性在类元素中设置:

<class name="E" laze="false">
...
</class>

<class name="D">
  <many-to-one name="e" .../>
</class>

多对一的惰性属性与任何属性的含义相同:它允许延迟加载单个属性,这仅在所有者本身是代理时才有效。在您的情况下,这不是您可以使用的任何东西,并且默认情况下它被设置为 false 。

于 2011-09-28T14:18:20.530 回答