Spring JPA存储库最近的日期

时间:2016-01-11 17:53:36

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

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

findTopByCreatedDateBefore (返回第一个创建的行)

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

findTopByCreatedDateBeforeOrderByCreatedDateDesc (返回上次创建的行)

findFirstByCreatedDateBeforeOrderByCreatedDateDesc (返回上次创建的行(为什么相同?)

最后两个返回我想要的但是它是使用它们的最佳方式吗?为什么前两个会返回相同的结果?

2 个答案:

答案 0 :(得分:0)

由于关键字TopFirst都将结果限制为可选数字,因此默认为1.因此,他们定义要返回的元素数量,不是隐式排序 - 主要是因为没有排序存在,除非你明确指定它。

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

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

答案 1 :(得分:0)

我只是将PageRequest作为findAll的参数传递,其中page为1,pageSize为1,订单为DESC“createdDate”