JPA找到最后一个条目

Roc*_*och 18 java sql jpa

我想知道用JPA获取表的最后一个条目的最佳方法是什么.在Sql中,我正在寻找的是:

select id from table order by id desc limit 1 
Run Code Online (Sandbox Code Playgroud)

我在考虑model.count(),但这听起来更像是一个黑客而不是一个好的解决方案;)

arn*_*noe 39

查询方法的结果可以通过关键字firsttop来限制,可以互换使用.可选的数值可以附加到top/first以指定要返回的最大结果大小.如果省略该数字,则假定结果大小为1.

JpaClass findFirstByOrderByIdDesc();
Run Code Online (Sandbox Code Playgroud)

由Spring Data JPA docs引用


ray*_*d09 23

您可以使用JPQL query看起来与查询非常相似的内容.

select t from JpaClass t order by t.id desc
Run Code Online (Sandbox Code Playgroud)

建立你的后,Query object你可以打电话

query.getSingleResult() or call query.setMaxResults(1)
Run Code Online (Sandbox Code Playgroud)

其次是

query.getResultList()
Run Code Online (Sandbox Code Playgroud)

编辑:我的错误:请注意mtpettyp的评论如下.

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

使用setMaxResults和getResultList.

query.setMaxResults(1).getResultList();
Run Code Online (Sandbox Code Playgroud)

  • 不要使用query.getSingleResult()作为异常,如果没有返回一行,则可以抛出异常 - 请参阅http://java.sun.com/javaee/5/docs/api/javax/persistence/Query.html #getSingleResult() (7认同)

小智 8

我知道我参加聚会迟到了,但这可能对某人有帮助。如果您想通过创建的时间戳获取最新条目。(当你不想依赖表id时):

YourEntity findFirstByOrderByCreatedTsByDesc();