Paginering fungerar inte med sammanfogade samlingar eftersom den räknar alla rader som har uppfyllt where
predikat (Hibernate har inget med detta att göra, det är hur databaser fungerar, till exempel Oracle rownum
).
Det vanliga sättet att övervinna detta är att använda subqueries, så att rownum
(eller motsvarande i databasen som används) tillämpas på de valda raderna i endast en tabell (eller sammanfogade tabeller som är i ett-ett-förhållande).
I HQL:
select p from Parent p were p in (select c.parent from Child c where ...)
kriteriemotsvarigheten kan byggas på liknande sätt.