0

我有 3 个实体

A、B 和 C

A 和 B
之间存在一对一关系 B 和 C 之间存在多对一关系

当我访问实体“A”时,我可以向下钻取并获取 C 的值

但是,当我的 HQL 中有嵌套条件时,我得到空指针异常

查询看起来像

from(A) where A.B.C.some_parameter.eq(value)

我已经添加了

<property name="hibernate.max_fetch_depth" value="4" />

在我的配置中,但我仍然不断收到 Null 指针异常

4

2 回答 2

0

查询应该是..

"from A a where a.B.C.some_parameter = value"

检查参考,Hibernate Lazy在 A、B 和 C 之间必须为假。您定义的属性我认为这与您的愿望没有任何依赖关系。此外,对于您执行查询的实体,必须具有从 A 到 C 的完整桥接以及您在 where 子句中使用的 C 属性。

于 2012-06-01T14:02:30.690 回答
0

那甚至不是远程有效的 HQL :)

1)您不要将实体引用包含在括号中;只是from A

2)您想进一步取消引用该 A 引用,因此通常您会将其别名为from A a

3) 假设 .eq 是进行相等比较的尝试,它的where a.b.c.someProperty = value

4) fetch_depth 在这里绝对没有影响。

于 2012-06-01T13:05:19.027 回答