Pour les bases de données le supportant, Hibernate supporte les sous requêtes dans les requêtes. Une sous requête doit être entre parenthèses (souvent pour un appel à une fonction d'agrégation SQL) Même les sous requêtes corrélées (celles qui font référence à un alias de la requête principale) sont supportées.
from Cat as fatcat
where fatcat.weight > (
select avg(cat.weight) from DomesticCat cat
)from DomesticCat as cat
where cat.name = some (
select name.nickName from Name as name
)from Cat as cat
where not exists (
from Cat as mate where mate.mate = cat
)from DomesticCat as cat
where cat.name not in (
select name.nickName from Name as name
)select cat.id, (select max(kit.weight) from cat.kitten kit) from Cat as cat
Notez que les sous-requêtes HQL peuvent arriver seulememnt dans les clauses select ou where.
Note that subqueries can also utilize row value constructor syntax. See Section 14.18, « Row value constructor syntax » for more details.