我有以下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子句中引用别名。
如何在没有重复函数调用的情况下重写查询?
答案 0 :(得分:1)
Hibernate不适用于group by或任何聚合函数中的别名。正如您将在生成的sql查询中看到的那样,别名与您分配的别名不同。
答案 1 :(得分:1)
您可以尝试在group by子句中使用2代替date_trunc('hour',a.date),因为fromdate是第二列