Как избежать дублирования вызова функции в этом запросе 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)
Я запускаю это в приложении Spring Boot, используя Hibernate. Работает нормально. Но я не хочу дублировать вызов функции date_trunc
, Я попытался сослаться на fromDate в предложении GROUP BY, но затем я получил исключение org.postgresql.util.PSQLException: ERROR: column "fromdate" does not exist
http://hibernate.atlassian.net/browse/HHH-9301 также утверждает, что нельзя ссылаться на псевдонимы в группе по предложению.
Как я могу переписать свой запрос без повторного вызова функции?
2 ответа
Можете ли вы попробовать использовать 2 вместо date_trunc('hour', a.date) в предложении group by, так как fromdate - 2-й столбец
Hibernate не работает с псевдонимом в группе или каких-либо агрегатных функциях. И как вы увидите в сгенерированном SQL-запросе, псевдоним отличается от того, который вы назначили.