3

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

问候, 伊姆兰

4

1 回答 1

1

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

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

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

于 2012-07-19T18:25:56.420 回答