Spring Data JPA - 查询日期减去 2 天不起作用

Posted

技术标签:

【中文标题】Spring Data JPA - 查询日期减去 2 天不起作用【英文标题】:Spring Data JPA - query with the date minus 2 days not working 【发布时间】:2018-07-05 21:33:57 【问题描述】:

我有这个查询更新了比 2 天前更高的一些价格,但不起作用

  @Transactional
    @Modifying
    @Query("update HotelDailyPrice hdp  set hdp.price = (select avg (hp.price) "
            + "from HotelPrice hp where hp.id = ?1 and hp.updateDate > CURRENT_DATE - 2), hdp.day = ?2 ")
    void updateDailyAveragePrice (Hotel hotel, String dayDate);

【问题讨论】:

“不起作用”不是问题描述。为什么它不起作用?你有错误吗?如果是这样,错误是什么?你会得到意想不到的结果吗?如果是这样,你得到了什么结果,你期望什么(基于什么数据)? 实际调用的 SQL 是什么? 【参考方案1】:

实际上,JPA 不支持时间段操作,因为并非所有数据库都支持它。所以你有以下选择:

    以编程方式计算日期(即使用日历 API 或 Java 8 日期时间 API) 使用原生查询 如果您的 JPA 提供商允许,请使用具体实现。但是 AFAIK 流行的 JPA 提供商不给你这样的选择。

【讨论】:

以上是关于Spring Data JPA - 查询日期减去 2 天不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Spring data jpa Specification查询关于日期的范围搜索

Spring Data JPA如何传递日期参数

没有 JPQL 查询的 Spring-data-jpa 中的 CURRENT_DATE

Spring Data JPA - 带有“@Param Date”的自定义@Query 不起作用

在为嵌套对象创建自定义 Spring Data JPA 查询时获取 IllegalArgumentException

使用 Spring Data JPA 获取两个日期之间的记录