Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Paginação no Hibernate com tabelas unidas


A paginação não funciona com coleções unidas porque conta todas as linhas que satisfizeram o where predicado (Hibernate não tem nada a ver com isso, é como os bancos de dados funcionam, por exemplo Oracle rownum ).

A maneira usual de superar isso é usar subconsultas, para que rownum (ou o equivalente no banco de dados usado) é aplicado às linhas selecionadas de apenas uma tabela (ou tabelas unidas que estão em relacionamentos para um).

Em HQL:
select p from Parent p were p in (select c.parent from Child c where ...)

O critério equivalente pode ser construído de forma semelhante.