【问题标题】:SUM function in NamedQuery of EclipseLinkEclipseLink 的 NamedQuery 中的 SUM 函数
【发布时间】:2012-07-18 19:02:00
【问题描述】:

我正在使用以下 NamedQuery 但出现错误

@NamedQueries({
    @NamedQuery(name="getAvailableAmount", query="SELECT sum(tup.tran_amount) FROM TopUpResponse tup"),
    @NamedQuery(name="getUpFrontDiscount", query="SELECT (sum( abs( tup.tran_amount) )*.04) FROM TopUpResponse tup WHERE tup.service='BILLPAYMENT'")
})

内部异常:FailedPredicateException(arithmeticPrimary,{ aggregatesAllowed() }?)

我尝试了以下格式但仍然出现错误

SELECT FUNC('ABS',tup.tran_amount) FROM TopUpResponse tup

异常描述:语法错误解析查询 [getAvailableAmount: SELECT FUNC('ABS',tup.tran_amount) FROM TopUpResponse tup],第 1 行,第 11 列:[(] 处的语法错误。 内部异常:MismatchedTokenException(81!=32)

问候, 伊姆兰

【问题讨论】:

    标签: java jpa eclipselink jpql


    【解决方案1】:

    这似乎是旧版本 EclipseLink 中的错误。我在 EclipseLink 2.0.0 中尝试了相同的查询。第二个命名查询和使用 FUNC 的查询完全按照您描述的方式失败,第一个命名查询工作。

    在 EclipseLink 2.3.2 中,所有三个查询都按预期工作。因此,这些版本之间的某个问题得到了修复。我不知道在哪个版本中引入了确切的修复。

    您唯一能做的就是更新到较新版本的 EclipseLink。

    【讨论】:

      猜你喜欢
      • 2023-03-31
      • 2013-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-07
      • 1970-01-01
      • 1970-01-01
      • 2019-09-01
      相关资源
      最近更新 更多