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:
Notez qu'en mode veille prolongée, vous pouvez utiliser
J'ai essayé, il a jeté IllegalArgumentException.
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
Vous devez vous connecter pour publier un commentaire.
Non, il n'y a pas une telle fonctionnalité dans JPQL. Soutien à l'assemblage à condition spécifique est mentionné dans JPA 2.1 liste des sujets:
Alors peut-être JPQL aura dans le futur.
OriginalL'auteur Mikko Maunu
Mais vous pouvez le faire avec l'API des Critères
C'est la peine documenté signature de
Criteria.createAlias()
avec une Restriction de l'objet comme le quatrième paramètre. Il fonctionne si bien qu'il vaut la peine d'apprentissage Critères d'API pour obtenir la fonctionnalité.OriginalL'auteur carbontax
JPA 2.1 ajout du support pour SUR rejoindre conditions.
C'est aussi un meilleur choix de nom que le HQL "avec la" clause.
OriginalL'auteur Vlad Mihalcea