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查询关于日期的范围搜索
没有 JPQL 查询的 Spring-data-jpa 中的 CURRENT_DATE
Spring Data JPA - 带有“@Param Date”的自定义@Query 不起作用