在HQL

2010-10-06 25 views
2
傳遞一個參數來選擇情況下與組由

我有以下HQL(Hibernate查詢語言)的查詢(其上Oracle數據庫連接執行)來檢索聚集的總和,基於月在HQL

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異常不是一個GROUP BY表達式

如果我更換:與SYSDATE,查詢工作。 如果m:是Date,我該如何重寫查詢?

回答

0

所以,我已經結束了與實際值替換參數:

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();