如何在MySQL中使用Hibernate HQL和AVG-Function

时间:2013-05-23 18:43:17

标签: mysql hibernate hql average

我有以下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"

这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

基本查询语法不正确,无法选择 o.useCase和o.description没有,使用聚合器,或在group by子句中包含 BOTH

要修复,请将group by子句更改为:

GROUP BY o.useCase, o.description

答案 1 :(得分:0)

Thx CSL,

但这不是问题,因为按一栏分组效果非常好。

我发现问题是,AVG()函数将o.totalTime的类型更改为Double值。这就是它无法找到合适的构造函数的原因。