2010-01-13 10 views
9

Ich würde gerne wissen, was ist der beste Weg, um den letzten Eintrag einer Tabelle mit JPA zu bekommen. In Sql, was ich suche wäre wie:JPA finden Sie den letzten Eintrag

select id from table order by id desc limit 1 

ich über model.count Denken(), aber das klingt eher wie ein Hack als eine gute Lösung;)

Antwort

18

Sie verwenden könnten eine JPQL-Abfrage, die Ihrer Abfrage sehr ähnlich ist.

select t from JpaClass t order by t.id desc 

Nachdem Sie Ihre Abfrage-Objekt etablieren könnten Sie dann rufen query.getSingleResult() oder rufen Sie query.setMaxResults (1), gefolgt von query.getResultList()

EDIT: Mein Fehler: Bitte beachten Sie mtpettyp Kommentar unten.

Verwenden Sie keine query.getSingleResult() als eine Ausnahme ausgelöst werden könnte, wenn es nicht genau eine Zeile zurückgegeben wird - siehe java.sun.com/javaee/5/...() - mtpettyp

Gehen Sie mit setMaxResults und getResultList.

query.setMaxResults(1).getResultList(); 
+6

Verwenden query.getSingleResult nicht() als eine Ausnahme ausgelöst werden könnte, wenn es nicht genau eine Zeile zurückgegeben wird - siehe http://java.sun.com/javaee/5/ docs/api/javax/Persistenz/Query.html # getSingleResult() – mtpettyp

13

Die Ergebnisse von Abfragemethoden können über die Schlüsselwörter erste oder oben, beschränkt werden, die austauschbar verwendet werden können. Ein optionaler numerischer Wert kann nach oben/zuerst angehängt werden, um die maximale Ergebnisgröße anzugeben, die zurückgegeben werden soll. Wenn die Nummer weggelassen wird, wird eine Ergebnisgröße von 1 angenommen.

JpaClass findFirstByOrderByIdDesc(); 

referenced by Spring Data JPA docs

Verwandte Themen