Phân trang không hoạt động với các bộ sưu tập đã kết hợp vì nó đếm tất cả các hàng thỏa mãn where
vị từ (Hibernate không liên quan gì đến điều này, đó là cách cơ sở dữ liệu hoạt động, ví dụ: Oracle rownum
).
Cách thông thường để khắc phục điều này là sử dụng truy vấn con, để rownum
(hoặc tương đương trong cơ sở dữ liệu được sử dụng) được áp dụng cho các hàng đã chọn của chỉ một bảng (hoặc các bảng được kết hợp có quan hệ với một).
Trong HQL:
select p from Parent p were p in (select c.parent from Child c where ...)
tiêu chí tương đương có thể được xây dựng theo cách tương tự.