Paginacja nie działa z połączonymi kolekcjami, ponieważ zlicza wszystkie wiersze, które spełniły warunek where
predykat (Hibernate nie ma z tym nic wspólnego, tak działają bazy danych, na przykład Oracle rownum
).
Zwykłym sposobem na obejście tego jest użycie podzapytań, tak aby rownum
(lub odpowiednik w używanej bazie danych) jest stosowany do wybranych wierszy tylko jednej tabeli (lub połączonych tabel, które są w relacji do jednego).
W HQL:
select p from Parent p were p in (select c.parent from Child c where ...)
odpowiednik kryteriów można zbudować w podobny sposób.