【问题标题】:Spring Data - get last record from the table [duplicate]Spring Data - 从表中获取最后一条记录[重复]
【发布时间】:2018-11-25 01:46:19
【问题描述】:

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

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

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

【问题讨论】:

  • “最后”对您意味着什么?
  • 如果使用序列,则订单表在 id 上反转,如果使用审计,则在 creation_date 上反转,然后限制为 1 条记录。
  • 我想做这样的事情:“select * from settings order by id desc limit 1”

标签: java spring spring-data-jpa spring-data


【解决方案1】:

你应该使用findTopByOrderByIdDesc()

这叫命名查询,可以查看documentation

【讨论】:

  • 我想看看50个线程插入同一张表时的结果...
  • @madhairsilence 它被称为 Spring Boot 命名查询。检查文档...docs.spring.io/spring-data/jpa/docs/current/reference/html/…
  • 奇怪的是,像上面那样命名方法真的很重要,尽管它说 findTopBy... 然后没有指定要通过什么找到它并直接进入 OrderBy 然后具有字段名称, 最后以 Desc 结尾;就是这样。
  • 我使用 findTopByOrderByIdDesc 并且我的表对象类中有一个 id 属性。但总是收到空值。我在数据库中有一行。
【解决方案2】:

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

但是,您可以反向排序(例如,对 ID 进行 DESC - 假设有 ID)并获取第一条记录。

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

【讨论】:

  • 我知道如何在 SQL 中执行此操作,但是如何使用 Spring Data 执行此操作?
  • 你的意思是没有特定的功能可以做到这一点?您可以使用 findTopByOrderByIdDesc()
  • @MountainKing 我想我可以更准确地措辞。我的意思是:没有函数可以直接得到最后一个结果——无需降序(我知道)。
  • 谢谢@MountainKing,这就是我一直在寻找的
猜你喜欢
  • 2014-07-26
  • 2022-10-01
  • 2012-02-13
  • 2011-08-18
  • 1970-01-01
  • 1970-01-01
  • 2012-02-12
  • 2017-05-08
相关资源
最近更新 更多