我正在使用以下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)
此致 姆兰
答案 0 :(得分:1)
这似乎是旧版EclipseLink中的错误。我在EclipseLink 2.0.0中尝试了相同的查询。使用FUNC的第二个命名查询和查询完全按照您描述的方式失败,首先命名查询工作。
在EclipseLink 2.3.2中,所有三个查询都按预期工作。所以介于这些版本之间的问题是固定的。我不知道引入了哪个版本。
您唯一能做的就是更新到更新版本的EclipseLink。