Alternative zur MySQL LIMIT-Klausel in JPQL oder HQL
In Hibernate 3 wird das Äquivalent der MySQL LIMIT-Klausel in HQL nicht direkt unterstützt . Während dies in früheren Versionen von Hibernate möglich war, ist es keine Funktion mehr.
Historischer Hinweis:
In Hibernate 2 hat der HQL-Parser die Einhaltung nicht strikt erzwungen zur Standard-HQL-Syntax. Dies führte dazu, dass nicht erkannte Fragmente, wie z. B. die LIMIT-Klausel, in eine HQL-Abfrage einbezogen werden konnten. Mit der Einführung eines AST HQL-Parsers in Hibernate 3 werden solche nicht standardmäßigen Konstrukte jedoch nicht mehr toleriert.
Lösung:
Der empfohlene Ansatz zur Einschränkung der Abfrage Ergebnisse in Hibernate 3 und höher bestehen darin, die setMaxResults()-Methode der Query-Schnittstelle zu verwenden. Mit dieser Methode können Sie die maximale Anzahl von Ergebnissen angeben, die von der Abfrage zurückgegeben werden sollen.
Um das Verhalten der MySQL LIMIT-Klausel zu emulieren, können Sie setMaxResults() in Verbindung mit der setFirstResult()-Methode verwenden. Um beispielsweise die ersten 20 Ergebnisse einer Abfrage zurückzugeben, würden Sie den folgenden Code verwenden:
Query query = session.createQuery("from ATable order by aTableColumn desc"); query.setMaxResults(20); query.setFirstResult(0);
setMaxResults() ist zwar möglicherweise nicht so prägnant wie die LIMIT-Klausel, bietet aber einen konsistenten und unterstützten Mechanismus zur Begrenzung der Abfrageergebnisse in JPQL und HQL.
Das obige ist der detaillierte Inhalt vonWie ersetze ich die LIMIT-Klausel von MySQL in JPQL oder HQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!