Mysql
 sql >> Database >  >> RDS >> Mysql

Impaginazione in Hibernate con tabelle unite

L'impaginazione non funziona con le raccolte unite perché conta tutte le righe che hanno soddisfatto il where predicato (Hibernate non ha nulla a che fare con questo, è il modo in cui funzionano i database, ad esempio Oracle rownum ).

Il solito modo per superare questo problema è usare le sottoquery, in modo che rownum (o l'equivalente nel database utilizzato) viene applicato alle righe selezionate di una sola tabella (o tabelle unite che sono in relazioni a uno).

In HQL:

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

L'criteri equivalente può essere costruito in modo simile.