我有一个实体(id,created_date)。我想在我的JPARepository中创建一个方法,该方法从现在开始返回最接近的行。 CreatedDate是ZonedDateTime。我创建了下一个方法(参数是ZonedTimeDate.now()):
findTopByCreatedDateBefore (返回第一个创建的行)
findFirstByCreatedDateBefore (返回第一个创建的行(为什么相同?)
findTopByCreatedDateBeforeOrderByCreatedDateDesc (返回上次创建的行)
findFirstByCreatedDateBeforeOrderByCreatedDateDesc (返回上次创建的行(为什么相同?)
最后两个返回我想要的但是它是使用它们的最佳方式吗?为什么前两个会返回相同的结果?
答案 0 :(得分:0)
由于关键字Top
和First
都将结果限制为可选数字,因此默认为1.因此,他们仅定义要返回的元素数量,不是隐式排序 - 主要是因为没有排序存在,除非你明确指定它。
在没有任何排序语义的情况下,无法定义top
和first
,因为大多数商店都不保证结果的任何排序,除非您指定排序选项。因此,每个方法调用的元素顺序甚至可能不同。
因此,在您给出的示例中,前两个方法将结果限制为一个参数。
答案 1 :(得分:0)
我只是将PageRequest
作为findAll
的参数传递,其中page为1,pageSize为1,订单为DESC
“createdDate”