12.4.5. La clause WITH
HQL définit une clause
WITH pour qualifier les conditions de jointure. Cela est spécifique à HQL. JPQL ne définit pas cette fonctionnalité.
Exemple 12.4. Exemple de jointure de with-clause
select distinct c
from Customer c
left join c.orders o
with o.value > 5000.00
select distinct c
from Customer c
left join c.orders o
with o.value > 5000.00
La grande différence est que, dans le SQL généré, les conditions de
with clause font partie de on clause dans le SQL généré contrairement aux autres requêtes dans cette section où les conditions HQL/JPQL font partie de la where clause dans le SQL généré. La différence dans cet exemple en particulier n'est sûrement pas très importante. La with clause est quelques fois nécessaire pour des requêtes plus compliquées.
Les jointures explicites peuvent faire référence à des attributs d'association ou de composant/intégrés. Dans le cas d'attributs de composant/intégrés, la jointure est tout simplement logique et n'est pas en corrélation avec une jointure (SQL) physique.