Как избежать дублирования вызова функции в этом запросе 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-запросе, псевдоним отличается от того, который вы назначили.

Другие вопросы по тегам