Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Paginierung im Ruhezustand mit verbundenen Tabellen

Die Paginierung funktioniert nicht mit verbundenen Sammlungen, da sie alle Zeilen zählt, die das where erfüllt haben Prädikat (Hibernate hat damit nichts zu tun, so funktionieren Datenbanken, zum Beispiel Oracle rownum ).

Der übliche Weg, dies zu umgehen, ist die Verwendung von Unterabfragen, sodass rownum (oder das Äquivalent in der verwendeten Datenbank) wird auf die ausgewählten Zeilen von nur einer Tabelle (oder verknüpften Tabellen, die in Eins-zu-Eins-Beziehungen stehen) angewendet.

In HQL:

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

Das Kriterienäquivalent kann auf ähnliche Weise aufgebaut werden.