2010-01-13 14 views
9

Me gustaría saber cuál es la mejor manera de obtener la última entrada de una tabla con JPA. en SQL, lo que estoy buscando sería como:JPA encuentra la última entrada

select id from table order by id desc limit 1 

Estaba pensando en model.count(), pero que suena más como un truco que una buena solución;)

Respuesta

18

Usted podría utilizar una consulta JPQL que se ve muy similar a su consulta.

select t from JpaClass t order by t.id desc 

Después de establecer el objeto de consulta se podría llamar entonces query.getSingleResult() o llamar query.setMaxResults (1), seguido de query.getResultList()

EDIT: Mi error: Por favor, tenga en cuenta el comentario de mtpettyp abajo.

No utilice query.getSingleResult() como una excepción podría ser lanzado si no es exactamente una fila devuelta - ver java.sun.com/javaee/5/...() - mtpettyp

Ir con setMaxResults y getResultList.

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

No utilice query.getSingleResult() como una excepción podría ser lanzado si no es exactamente ha devuelto una fila - ver http://java.sun.com/javaee/5/ docs/api/javax/persistence/Query.html # getSingleResult() – mtpettyp

13

Los resultados de métodos de consulta pueden ser limitados por medio de las palabras clave primera o superior, que pueden utilizarse indistintamente. Se puede agregar un valor numérico opcional a la parte superior/primera para especificar el tamaño de resultado máximo que se devolverá. Si se omite el número, se supone un tamaño de resultado de 1.

JpaClass findFirstByOrderByIdDesc(); 

referenced by Spring Data JPA docs

Cuestiones relacionadas