Spring Data - 获取表中的最后一条记录

38

我正在使用Spring Data JPA,并且想要从Settings表中检索最后一条记录。

我有一个实现了Spring Data标准方法的SettingsRepository。如何编写一个方法(或查询)来从给定的表中检索最后一行?

interface SettingsRepository extends JpaRepository<Settings, Long> {
    // ?
}

1
对你来说,“last”是什么意思? - Fran Montero
1
如果您使用序列,则按id反转订单表,或者如果您使用审计,则按creation_date反转,然后限制为1条记录。 - Nico Van Belle
我想做类似这样的事情:“select * from settings order by id desc limit 1” - k13i
2个回答

98

你应该使用findTopByOrderByIdDesc()

这被称为命名查询,你可以查看文档


2
我想看到当50个线程插入同一张表时的结果... - Book Of Zeus
2
@madhairsilence,它被称为Spring Boot Named Query。请查看文档...https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#reference - Dinesh Shekhawat
奇怪的是,按照上面的方法命名确实非常重要,尽管它说的是findTopBy...,然后没有指定要查找什么,直接进行OrderBy,然后再指定字段名称,最后以Desc结束;但这就是正确的方法。 - Kyle Willkomm
我使用findTopByOrderByIdDesc方法,而且我的表对象类中有一个id属性。但总是得到null。我在数据库中有一行数据。 - Amir

6

没有特定的函数可以获取最后一条记录。

但是,您可以按相反顺序排序(例如按ID降序排列),并获取第一条记录。

编辑:根据下面评论中@MountainKing的建议,您可以使用findTopByOrderByIdDesc()


我知道如何在 SQL 中实现,但如何使用 Spring Data 实现呢? - k13i
2
你是说没有特定的函数可以做到这一点吗?你可以使用findTopByOrderByIdDesc()。 - Lemmy
@MountainKing 我想我可以更准确地表达。我的意思是:没有直接获取最后结果的函数,而不需要按降序排序(至少我不知道有这样的函数)。 - FrederikVH
1
谢谢@MountainKing,这正是我一直在寻找的。 - k13i

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接