Paginering werkt niet met samengevoegde collecties omdat het alle rijen telt die voldoen aan de where
predikaat (Hibernate heeft hier niets mee te maken, het is hoe databases werken, bijvoorbeeld Oracle rownum
).
De gebruikelijke manier om dit te verhelpen is door subquery's te gebruiken, zodat rownum
(of het equivalent in de gebruikte database) wordt toegepast op de geselecteerde rijen van slechts één tabel (of samengevoegde tabellen die in op-één-relaties staan).
In HQL:
select p from Parent p were p in (select c.parent from Child c where ...)
De equivalent van criteria kan op een vergelijkbare manier worden gebouwd.