EclipseLink的NamedQuery中的SUM函数

时间:2012-07-19 14:51:22

标签: java jpa eclipselink jpql

我正在使用以下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)

此致 姆兰

1 个答案:

答案 0 :(得分:1)

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

在EclipseLink 2.3.2中,所有三个查询都按预期工作。所以介于这些版本之间的问题是固定的。我不知道引入了哪个版本。

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