From Hibernate 3.6 documentation:
You may supply extra join conditions using the HQL with keyword.
from Cat as cat
left join cat.kittens as kitten
with kitten.bodyWeight > 10.0
This with clause allows to add a restriction on the JOIN condition (ON clause). Is there any such thing in JPQL?
When I run the following JPQL:
select c from ContainerDef c left join fetch c.displayState ds where c.id = 1 and ds.user.id = 2
The following SQL is generated:
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=?
What should really get generated is:
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=?
I am sure I'm missing the right JPQL clause for HQL's with.
HQL also defines a WITH clause to qualify the join conditions. Again, this is specific to HQL; JPQL does not define this feature.docs.jboss.org/hibernate/orm/4.1/devguide/en-US/html/… - RinaldoDevwithin JPQL as well. - axtavt