我有 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 指针异常
查询应该是..
"from A a where a.B.C.some_parameter = value"
检查参考,Hibernate Lazy在 A、B 和 C 之间必须为假。您定义的属性我认为这与您的愿望没有任何依赖关系。此外,对于您执行查询的实体,必须具有从 A 到 C 的完整桥接以及您在 where 子句中使用的 C 属性。
那甚至不是远程有效的 HQL :)
1)您不要将实体引用包含在括号中;只是from A
2)您想进一步取消引用该 A 引用,因此通常您会将其别名为from A a
3) 假设 .eq 是进行相等比较的尝试,它的where a.b.c.someProperty = value
4) fetch_depth 在这里绝对没有影响。