【问题标题】:Spring Data JPA to return List of Dates with a specified range (Start Date && End Date)Spring Data JPA 返回具有指定范围的日期列表(开始日期和结束日期)
【发布时间】:2020-02-17 21:59:38
【问题描述】:

目前,我正在尝试返回一个对象列表,其日期落在参数给定的范围内……但是,当我运行我的 rest api 调用时,没有返回任何内容。我不确定我是否正确地执行了这个 Spring JPA 请求,并决定获得一些反馈,无论我所做的事情是否不正确。

这里有一些简短的伪代码:

对象模型

public class mResult{
/* other variables */
LocalDate runDate;
}

回购

public interface mResultRepository extends CrudRepository<mResult,String> {
    List<mResult> findAllByRunDateBetween(LocalDate startDate,LocalDate endDate);
}

服务

mResultRepository mRepository;

public List<mResult> getAllBetweenDates(LocalDate startDate, LocalDate endDate){
     return mRepository.findAllByRunDateBetween(startDate,endDate);
 }

我的 repo 包含 JSON 对象,例如:

{"runDate": "2019-02-05"}
{"runDate": "2019-02-06"}
{"runDate": "2019-02-10}

如果我的范围是 2019-02-01 到 2019-02-09,那么它应该只返回这个范围内的那些。但是,当我运行我的 API 请求时,没有返回任何内容。我的 Spring JPA 请求是否正确? TIA

【问题讨论】:

  • 您的数据源是什么?蒙哥?我认为您只需要在模型中添加注释即可告诉 JPA 您希望在哪个表或集合中获取数据,例如:@Entity @Table(name="yourtable")

标签: java spring spring-data-jpa


【解决方案1】:

前段时间我遇到了同样的问题,我尝试/找到从数据库级别获取解决方案,但我没有找到任何合适的方法来解决数据库级别的问题,所以我希望它从 Java 方面解决它下面给出一个示例代码。

List<LocalDate> runningDates = Stream.iterate(startDate, date -> date.plusDays(1))
            .limit(ChronoUnit.DAYS.between(startDate, endDate.plusDays(1)))
            .collect(Collectors.toList());

相信对你有帮助。

【讨论】:

    【解决方案2】:

    我向我的控制器添加了一个@DateTimeFormat 注释。事实证明 Spring JPA 请求是正确的,但它没有采用我的“yyyy-MM-dd”格式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-23
      • 1970-01-01
      • 2021-06-26
      • 1970-01-01
      相关资源
      最近更新 更多