Pagination tidak berfungsi dengan koleksi yang digabungkan karena menghitung semua baris yang memenuhi where
predikat (Hibernate tidak ada hubungannya dengan ini, ini adalah cara kerja database, misalnya Oracle rownum
).
Cara yang biasa dilakukan untuk mengatasinya adalah dengan menggunakan subquery, sehingga rownum
(atau yang setara dalam database yang digunakan) diterapkan ke baris yang dipilih hanya dari satu tabel (atau tabel gabungan yang berada dalam hubungan ke-satu).
Di HQL:
select p from Parent p were p in (select c.parent from Child c where ...)
kriteria yang setara dapat dibangun dengan cara yang sama.