JPA找到最后一个条目

时间:2010-01-13 23:20:57

标签: java sql jpa

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

select id from table order by id desc limit 1 

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

4 个答案:

答案 0 :(得分:33)

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

JpaClass findFirstByOrderByIdDesc();

referenced by Spring Data JPA docs

答案 1 :(得分:21)

您可以使用与您的查询非常相似的JPQL query

select t from JpaClass t order by t.id desc

建立Query object后,您可以致电

query.getSingleResult() or call query.setMaxResults(1)

接着是

query.getResultList()

编辑:我的错误:请注意下面的mtpettyp评论。

  

不要使用query.getSingleResult()作为异常,如果   没有返回一行 - 请参阅java.sun.com/javaee/5/...()    - mtpettyp

使用setMaxResults和getResultList。

query.setMaxResults(1).getResultList();

答案 2 :(得分:1)

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

YourEntity findFirstByOrderByCreatedTsByDesc();

答案 3 :(得分:0)

对于选择使用EntityManager的用户,请尝试以下操作:

public List<T> findNRows(int n){
        return entityManager.createQuery("from "+entityClass.getSimpleName()+" ORDER BY id DESC",entityClass).setMaxResults(n).getResultList();
}