gpt4 book ai didi

java - JPA - 返回 StartDate 之后和 EndDate 之前的实体

转载 作者:IT老高 更新时间:2023-10-28 13:50:57 24 4
gpt4 key购买 nike

我的实体中有两个日期。即。

Date startDate;
Date endDate;

如何查询,以便给定日期,它将返回指定日期位于 startDateendDate 之间的所有实体?

我已经尝试了以下方法:

findByStartDateAfterAndEndDateBefore(Date givenDate);

Spring-Data-JPA 不喜欢这样并遇到错误。没有具体的错误,repo 就是无法注入(inject)我的类(class)。

正确的方法是什么?我知道这可以通过 Hibernate 标准或 Native SQL 轻松完成,但尝试在 Spring JPA 中做到这一点。

这是查询本身的问题还是 Spring 使用的日期类型之间存在某种不兼容?

尝试了 findByStartDateAfterAndEndDateBefore(Date givenDate, Date givenDate) 并且返回 null。

最佳答案

由于 Spring Data 的限制,您不能只使用一个参数,但您可以使用如下代码解决它:

List<AnEntity> findByStartDateBeforeAndEndDateAfter(Date startDate, Date endDate);

default List<AnEntity> findByStartDateBeforeAndEndDateAfter(Date givenDate) {
return findByStartDateBeforeAndEndDateAfter(givenDate, givenDate);
}

此代码应满足您的需求。我还使用 Spring Boot 1.5.9 对其进行了验证。使用 spring-data-get-started example .

关于java - JPA - 返回 StartDate 之后和 EndDate 之前的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47900182/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com