Пагинацията не работи с обединени колекции, защото отчита всички редове, които отговарят на where
предикат (Hibernate няма нищо общо с това, това е как работят базите данни, например Oracle rownum
).
Обичайният начин за преодоляване на това е да използвате подзаявки, така че rownum
(или еквивалентът в използваната база данни) се прилага към избраните редове само от една таблица (или свързани таблици, които са във връзки към едно).
В HQL:
select p from Parent p were p in (select c.parent from Child c where ...)
Еквивалентът на критериите може да се изгради по подобен начин.