Hibernate 3.6 のドキュメントから:
HQL with キーワードを使用して、追加の結合条件を指定できます。
from Cat as cat
left join cat.kittens as kitten
with kitten.bodyWeight > 10.0
このwith
句を使用すると、JOIN 条件 (ON 句) に制限を追加できます。JPQLにそのようなものはありますか?
次の JPQL を実行すると:
select c from ContainerDef c left join fetch c.displayState ds where c.id = 1 and ds.user.id = 2
次の SQL が生成されます。
select
...
from
CONTAINER_DEF containerd0_
left outer join
USER_CONTAINERDEF displaysta1_
on containerd0_.CONTAINERDEF_ID=displaysta1_.CONTAINERDEF_ID
where
containerd0_.CONTAINERDEF_ID=?
and displaysta1_.AUTHUSER_ID=?
実際に生成されるのは次のとおりです。
select
...
from
CONTAINER_DEF containerd0_
left outer join
USER_CONTAINERDEF displaysta1_
on containerd0_.CONTAINERDEF_ID=displaysta1_.CONTAINERDEF_ID
and displaysta1_.AUTHUSER_ID=?
where
containerd0_.CONTAINERDEF_ID=?
HQL の適切な JPQL 句が欠落していると確信していwith
ます。