左连接获取可空的孙子关联导致NPE处于休眠状态

时间:2011-05-11 18:44:20

标签: java database hibernate orm jpa

我有一个名为Foo的实体。它与Bar有一个可空的多对一关联。 Bar与Baz有一个不可空的多对一关联。

我的目标是抓住所有Foo实体并急切地获取他们的Bar关联,对于那些foo.bar非空的foo,急切地获取foo.bar.baz。

这可能吗?以下两者都会导致hibernate在其查询引擎中抛出NullPointerException:

select f from Foo f left join fetch f.bar left join fetch f.bar.baz

select f from Foo f left join fetch f.bar.baz

现在,这有效:

select f from Foo left join fetch f.bar

但是对于那些带有非空条的f,这并没有急切地获取f.bar.baz。

1 个答案:

答案 0 :(得分:1)

您需要在查询中使用别名bar

select f from Foo f
  left join fetch f.bar b
  left join fetch b.baz