Stránkování nefunguje se spojenými kolekcemi, protože počítá všechny řádky, které splnily where
predikát (Hibernate s tím nemá nic společného, takhle fungují databáze, například Oracle rownum
).
Obvyklým způsobem, jak to překonat, je použití poddotazů, takže rownum
(nebo ekvivalent v použité databázi) se použije na vybrané řádky pouze jedné tabulky (nebo spojených tabulek, které jsou ve vztahu k jedné).
V HQL:
select p from Parent p were p in (select c.parent from Child c where ...)
ekvivalent kritérií lze postavit podobným způsobem.