Передать параметр для выбора случая с группой в HQL - PullRequest
2 голосов
/ 06 октября 2010

У меня есть следующий запрос HQL ( Язык запросов Hibernate ) (который выполняется при подключении oracle db) для получения агрегированной суммы, основанной на месяце

select sum(doc._masskg), 
    case when (month(doc._date) = month(:m)) then 'NOW' else 'BEFORE' 
from Document doc 
    where month(doc._date) <= month(:m) 
group by 
    case when (month(doc._date) = month(:m)) then 'NOW' else 'BEFORE' end

однако во время выполнения я получаю исключение Oracle НЕ ГРУППА ПО ВЫРАЖЕНИЮ

, если я заменю : m на sysdate , запрос работает. Как мне переписать запрос, если m: is Date?

1 Ответ

0 голосов
/ 27 июня 2011

Итак, в итоге я заменил параметр фактическим значением:

String hql = "select sum(doc._masskg), "+
"    case when (month(doc._date) = month(%1$s)) then 'NOW' else 'BEFORE' "+
"from Document doc "+
"    where month(doc._date) <= month(%1$s) "+
"group by "+
"    case when (month(doc._date) = month(%1$s)) then 'NOW' else 'BEFORE' end";

Iterator i = session.createQuery(String.format(HQL, "to_date('09.10.2011', 'DD.MM.YYYY')"))
                .iterate();  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...