Criteria API JPA中的聚合(sum,max,avg)函数

时间:2013-03-25 17:57:07

标签: jpa jpa-2.0 criteria-api

在我的条件API查询中,查询我的表的三列的以下查询。

cq.multiselect(root.get(“point”)。get(“id”),root.get(“player”)。get(“userid”),root.get(“amount”) );

但是当我想使用以下查询得到列量的总和时,它会给出一个sql错误。查询是

cq.multiselect(root.get(“point”)。get(“id”),root.get(“player”)。get(“userid”),cb.sum(root.get( “金额”)));

我得到的错误是。

{“id”:“6”,“result”:null,“error”:“\ r \ n内部异常:com.sap.dbtech.jdbc.exceptions.jdbc40.SQLSyntaxErrorException:[ - 8017] (在8处):列必须是组列:ID \ r \ n \ n错误代码:-8017 \ r \ n

请帮助我,因为我已经坚持了好几个小时了。感谢

1 个答案:

答案 0 :(得分:1)

该消息告诉您在查询中需要group by子句。 select子句中的每一列(除了作为聚合函数结果的列)必须在group by子句中:

criteriaQuery.groupBy(root.get("point").get("id"), 
                      root.get("player").get("userid"))