0

我有以下 Hibernate-Query,到目前为止效果很好。

public static List<PerformanceLog> getStatistics() {
    return entityManager().createQuery(
            "SELECT NEW de.veliqi.selperf.model.PerformanceLog(o.useCase, o.description, o.totalTime) FROM PerformanceLog o",
             PerformanceLog.class).getResultList();
}

但我需要得到 o.totalTime 的平均值,但我不知道如何。使用以下语句会引发异常,说“org.hibernate.hql.internal.ast.QuerySyntaxException:无法在类上找到适当的构造函数”。

"SELECT NEW de.veliqi.selperf.model.PerformanceLog(o.useCase, o.description, AVG(o.totalTime)) FROM PerformanceLog o GROUP BY o.useCase"

正确的方法是什么?

4

2 回答 2

0

基本查询语法不正确,您不能选择 o.useCase 和 o.description 没有任何一个,在它们上使用聚合器,或者将它们都包含group by 子句中

要解决此问题,请将 group by 子句更改为:

GROUP BY o.useCase, o.description
于 2013-05-23T18:49:37.463 回答
0

谢谢中超,

但这不是问题,因为按一列分组效果很好。

我发现问题在于 AVG() 函数将 o.totalTime 的类型更改为 Double 值。这就是为什么它找不到合适的构造函数。

于 2013-05-23T19:19:02.900 回答