我有一个名为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。
答案 0 :(得分:1)
您需要在查询中使用别名bar
:
select f from Foo f
left join fetch f.bar b
left join fetch b.baz