La pagination ne fonctionne pas avec les collections jointes car elle compte toutes les lignes qui ont satisfait le where
prédicat (Hibernate n'a rien à voir avec cela, c'est ainsi que fonctionnent les bases de données, par exemple Oracle rownum
).
La façon habituelle de surmonter cela est d'utiliser des sous-requêtes, de sorte que rownum
(ou l'équivalent dans la base de données utilisée) est appliqué aux lignes sélectionnées d'une seule table (ou tables jointes qui sont dans des relations à un).
En HQL :
select p from Parent p were p in (select c.parent from Child c where ...)
Les équivalents aux critères peut être construit de la même manière.