【问题标题】:Create Query matching for current date [duplicate]为当前日期创建查询匹配[重复]
【发布时间】:2012-09-10 15:19:36
【问题描述】:

可能重复:
Example of using CURRENT_DATE in JPA query

我正在尝试向我的存储库添加一个查询,以将存储在数据库中的日期与当前日期进行比较。

我的查询是这样的:

@Query("Select c from Customer c where c.terminated != 1 or c.terminationDate > <currentDate>")
public List<Customer> getTerminatedCustomers();

我可以为&lt;currentDate&gt; 插入什么?

如果一切都失败了,我可以向该方法添加一个参数并将当前日期传递给这样的查询。但如果可能的话,我更喜欢更优雅的解决方案。

【问题讨论】:

    标签: jpa spring-data spring-data-jpa


    【解决方案1】:

    这个问题实际上是this one的重复。根据 Java Persistence API 规范第 4.6.17.2.3 节,有预定义函数 CURRENT_DATECURRENT_TIMECURRENT_TIMESTAMP。所以查询必须定义为

     select c from Customer c where c.terminated != 1 or c.terminationDate > CURRENT_DATE
    

    【讨论】:

    • 关于 CURRENT_DATE 是一个标准的 JPA 函数并且它应该在所有 JPA 提供程序和 RDBMS 中以相同的方式工作这一事实,当在 Hibernate 中与 SQL Server 一起使用时它应该是 CURRENT_DATE()。 (proof)
    猜你喜欢
    • 2022-01-04
    • 1970-01-01
    • 2018-04-03
    • 2012-03-05
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多