Spring JPA 存储库最近日期

Spring JPA Repository closest Date

我有一个实体(id,created_date)。我想在我的 JPARepository 中创建一个方法,return 是离现在最近的行。 CreatedDate 是一个 ZonedDateTime。我创建了下一个方法(参数是ZonedTimeDate.now()):

findTopByCreatedDateBefore(return第一个创建的行)

findFirstByCreatedDateBefore(return第一个创建的行(为什么相同?))

findTopByCreatedDateBeforeOrderByCreatedDateDesc(returns 最后创建的行)

findFirstByCreatedDateBeforeOrderByCreatedDateDesc(return最后创建的行(为什么相同?))

最后两个 return 是我想要的,但这是使用它们的最佳方式吗?为什么前两个return结果一样?

因为关键字TopFirst都将结果限制为默认为1的可选数字。所以他们定义数字return 的元素数量,而不是隐式排序 — 主要是因为不存在排序,除非您明确指定。

什么 topfirst 不能在没有任何排序语义的情况下定义,因为大多数商店不保证结果的任何排序,除非您指定排序选项。因此,元素的顺序甚至可能因每次方法调用而异。

因此在您提供的示例中,前两种方法将结果限制为一个参数。

我只是将PageRequest作为findAll的参数传递,其中page为1,pageSize为1,order为DESC "createdDate"