HQL подсчитывает отдельный нижний синтаксис

Я хочу перевести все имена пользователей в нижний регистр, а затем подсчитать, сколько их существует, но получаю сообщение об ошибке в этом запросе hql:

select count(distinct lower(user.username)) from UserEntity as user

org.hibernate.hql.internal.ast.QuerySyntaxException: expecting CLOSE, found 'user' near line 1, column 29 [select count(distinct lower(user.username)) 

Это отлично работает:

select count(distinct user.username) from UserEntity as user

Но когда я добавляю нижний (...), он терпит неудачу, любая помощь очень ценится!


person user2586917    schedule 13.06.2014    source источник
comment
Как вы отправляете этот запрос в спящий режим? Поскольку он отформатирован как собственный SQL-запрос, вы можете попробовать использовать createSQLQuery...   -  person Serge Ballesta    schedule 13.06.2014
comment
Спасибо @SergeBallesta, это то, что я в итоге сделал.   -  person user2586917    schedule 13.06.2014


Ответы (2)


Что о:

select count(lower(user.username)) from UserEntity as user group by lower(user.username)?

Я предполагаю, что вы возитесь с агрегатными функциями и операторами: count(disctinct lower(...)) — это шаблон [агрегированная функция] — [оператор] — [агрегированная функция], который не поддерживает HQL (или, по крайней мере, не рассматривается в документации).

person Narmer    schedule 13.06.2014

Спасибо @Serge Ballesta, в итоге я просто запустил это как SQL-запрос вместо HQL-запроса, и все сработало нормально.

person user2586917    schedule 13.06.2014