2010-01-13 59 views
9

我想知道使用JPA獲取表的最後一個條目的最佳方式是什麼。 在SQL中,我正在尋找的是這樣的:JPA找到最後一個條目

select id from table order by id desc limit 1 

我在想model.count(),但聽起來更像是一個黑客不是一個很好的解決方案;)

回答

18

你可以使用與查詢非常相似的JPQL查詢。

select t from JpaClass t order by t.id desc 

您建立查詢對象後,你可以再調用query.getSingleResult()或致電query.setMaxResults(1),其次是query.getResultList()

編輯:我的錯誤:請注意mtpettyp的評論下面。

不要使用query.getSingleResult()作爲一個例外可能會被拋出,如果 不是正好有一個返回行 - 看java.sun.com/javaee/5/...() - mtpettyp

轉到setMaxResults和getResultList。

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

如果不是正好有一個返回行,不要使用query.getSingleResult()作爲一個例外可能會被拋出 - 見http://java.sun.com/javaee/5/文檔/ API /的javax /持久/ Query.html#getSingleResult() – mtpettyp 2010-01-14 14:42:33

13

的查詢方法的結果可以通過關鍵字第一頂部,其可被互換地使用受到限制。一個可選的數字值可以被附加到top/first,以指定要返回的最大結果大小。如果該數字被忽略,則假定結果大小爲1。

JpaClass findFirstByOrderByIdDesc(); 

referenced by Spring Data JPA docs