如何避免在此JPA / JPQL查询中重复函数调用?

时间:2018-11-27 05:47:28

标签: java postgresql hibernate jpa jpql

我有以下JPA查询,可将日期截断为一个小时并对其进行计数:

SELECT a.alertconfiguration.id.id,
       date_trunc('hour', a.date) AS fromDate,
       count(*)                   AS count
FROM   alert a
GROUP  BY a.alertconfiguration.id.id,
          a.alertlevel,
          date_trunc('hour', a.date)

我正在使用Hibernate在Spring Boot应用程序中运行它。工作正常。但我不想将函数调用复制到date_trunc。 我尝试在GROUP BY子句中引用fromDate,但随后出现异常org.postgresql.util.PSQLException: ERROR: column "fromdate" does not exist

http://hibernate.atlassian.net/browse/HHH-9301还指出,无法在group by子句中引用别名。

如何在没有重复函数调用的情况下重写查询?

2 个答案:

答案 0 :(得分:1)

Hibernate不适用于group by或任何聚合函数中的别名。正如您将在生成的sql查询中看到的那样,别名与您分配的别名不同。

答案 1 :(得分:1)

您可以尝试在group by子句中使用2代替date_trunc('hour',a.date),因为fromdate是第二列