HQL "avec la" clause en JPQL

De mise en veille prolongée 3.6 documentation:

Vous pouvez approvisionnement supplémentaire des conditions de jointure à l'aide de la HQL avec mot-clé.

from Cat as cat
left join cat.kittens as kitten
    with kitten.bodyWeight > 10.0

Ce with clause permet d'ajouter une restriction sur la condition de JOINTURE (clause). Est-il une telle chose en JPQL?

Quand je lance le suivant JPQL:

select c from ContainerDef c left join fetch c.displayState ds where c.id = 1 and ds.user.id = 2

Le SQL suivant est généré:

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=?

Ce que devrait vraiment obtenir généré est:

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=? 

Je suis sûr que je suis absent le droit JPQL clause de HQL est with.

De mise en veille prolongée de la documentation: 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/...
Notez qu'en mode veille prolongée, vous pouvez utiliser with en JPQL.
J'ai essayé, il a jeté IllegalArgumentException.

OriginalL'auteur kmansoor | 2012-09-12