让我们假设下面的持久性对象...
@Getter
@Setter
@Entity
public class UserPo {
@Id
private Long id;
private String name;
private LocalTime birthDate;
}
...和以下存储库:
public interface UserRepository extends JpaRepository<UserPo, Long> {
Optional<UserPo> findDistinctTopByOrderByBirthDateDesc(final LocalDate limitDate);
}
findDistinctTopByOrderByBirthDateDesc
返回到指定日期为止最年轻的用户。
现在假设有以下8个用户:
---------------------------------------
ID | NAME | BIRTH_DATE (YYYY-MM-DD)
---------------------------------------
1 | Joe | 1980-10-25
2 | John | 1951-11-30 <===
3 | Matthew | 1988-09-27
4 | Paul | 1946-02-28
5 | Erik | 1987-07-11
6 | Michael | 1996-03-03
7 | David | 1990-08-15
8 | Steven | 2000-11-01 <===
我需要一个查询,给定2个日期,返回到这2个日期为止最年轻的用户。例如,查询输入是limitDate1
和limitDate2
,假设limitDate1
是2023-01-01
,LimitDate2
是1952-01-01
,查询将返回用户8和用户2。
任何帮助都将不胜感激。
1条答案
按热度按时间dgtucam11#
我想这是不可能的。为什么不使用两个不同的参数执行两次这个查询呢?顺便说一句,也许窗口函数会有帮助,但我几乎不能说这种方法会更有效。
该方法的签名将类似于以下内容: