【问题标题】:Example of using CURRENT_DATE in JPA query在 JPA 查询中使用 CURRENT_DATE 的示例
【发布时间】:2010-12-10 20:59:15
【问题描述】:

谁能给我举个例子,说明如何在 JPA 查询中使用 CURRENT_DATE

CURRENT_DATE 在 JPA 中指定,但我无法使其工作。我总是得到unexpected token [CURRENT_DATE] 异常。由于它在 JPA 中指定,所有提供者都应该遵守它,对吗?

我正在使用 EclipseLink 2.0 BTW。

【问题讨论】:

    标签: java jpa eclipselink


    【解决方案1】:

    如果您使用的是Expression Framework,则Expression (org.eclipse.persistence.expressions.Expression) 对象上有Expression currentDateDate() 方法。

    【讨论】:

    • 我需要尝试一下,但我确实试图避免使用通用 JPA 查询以避免依赖持久性提供程序。
    【解决方案2】:

    这个问题的答案是通过 JPA 检索值,然后用纯 Java 进行数学运算。

    【讨论】:

      【解决方案3】:

      可以这样使用:

      Query query = manager
          .createQuery("SELECT c FROM CITIES c WHERE c.founded = CURRENT_DATE");
      for (Object city : query.getResultList()) {
        System.out.println(city);
      }
      

      ...其中 founded 是一种时间类型:

        @Column(name = "FOUNDED")
        @Temporal(TemporalType.DATE)
        private Date founded = new Date();
      

      不是一个很好的例子,但你明白了。我正在使用 Eclipselink 1.1.2

      【讨论】:

      • 你真的很亲密。在看到你的回复之前,我已经走了这么远。我正在尝试执行类似 Select x from Table x where x.id=1 and (x.lastModified-CURRENT_DATE)>=365 我需要对日期使用计算。
      • 是否可以使用 JPA 进行日期时间运算?您必须具有一些功能才能将差异转化为几天(而不是几分钟、几个月或几千年等)。我不知道有任何此类功能。在 Java 中进行日期算术,然后选择与结果范围进行比较。
      • 我猜这是 JPA 的缺陷或缺失的功能。我猜我必须这样做。谢谢!
      • @McDowell - 我们如何实现 CURRENT_DATE 的逻辑 - 1,这不起作用
      猜你喜欢
      • 2015-03-18
      • 1970-01-01
      • 2013-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-21
      • 2019-02-09
      • 1970-01-01
      相关资源
      最近更新 更多