2010-01-13 14 views
9

Chciałbym wiedzieć, jaki jest najlepszy sposób na uzyskanie ostatniego wpisu tabeli z JPA. w SQL, co szukam byłoby jak:JPA znaleźć ostatni wpis

select id from table order by id desc limit 1 

Myślałam o model.count(), ale to brzmi bardziej jak hack niż dobre rozwiązanie;)

Odpowiedz

18

Można użyć zapytanie JPQL, które wygląda bardzo podobnie do zapytania.

select t from JpaClass t order by t.id desc 

Po ustaleniu przedmiotu Query można następnie wywołać query.getSingleResult() lub zadzwonić query.setMaxResults (1), a następnie query.getResultList()

EDIT: mój błąd: Uwaga komentarz mtpettyp za poniżej.

Nie używaj query.getSingleResult() jako wyjątek może być wyrzucone jeśli nie jest dokładnie jeden wiersz zwrócony - patrz java.sun.com/javaee/5/...() - mtpettyp

Idź za pomocą setMaxResults i getResultList.

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

Nie używaj query.getSingleResult() jako wyjątek może być wyrzucone jeśli nie ma dokładnie jeden wiersz zwrócony - patrz http://java.sun.com/javaee/5/ docs/api/javax/persistence/Query.html # getSingleResult() – mtpettyp

13

Wyniki metod zapytanie może być ograniczone za pomocą słów kluczowych pierwszy lub góry, które mogą być stosowane zamiennie. Opcjonalna wartość numeryczna może zostać dodana do góry/pierwszej, aby określić maksymalny rozmiar wyniku do zwrócenia. Jeśli liczba zostanie pominięta, przyjmuje się rozmiar wyniku równy 1.

JpaClass findFirstByOrderByIdDesc(); 

referenced by Spring Data JPA docs