1. 程式人生 > >Hibernate count和sum查詢

Hibernate count和sum查詢

前些日子用到了Hibernate,本人菜鳥一個,剛接觸Hibernate,想做一個count和sum一起的查詢,結果卡了老半天,網上百度也沒找到結果,後來迫不得已FQ找,最終找到了答案。其實這在Hibernate的API文件裡寫到過,當時沒注意,我是後來FQ時才發現的。所以還是得靠文件。最開始我相信做簡單的count(*) 或是sum查詢沒問題,只需要返回((Long)session.createQuery(hql).uniqueResult()).intValue()即可,但是如果要返回多個結果的話,而且又不是一個物件的屬性,那就要返回一個List或是Map型別的物件了。例如使用map的話hql語句中

select new map( max(bodyWeight) as max, min(bodyWeight) as min, count(*) as n )
from Cat cat

使用list:

select new list(mother, offspr, mate.name)
from DomesticCat as mother
    inner join mother.mate as mate
    left outer join mother.kittens as offspr
Map<String,Object> map =(Map) SessionHelper.getSession().createQuery(hql).uniqueResult();

就能得到一個map物件了,之後就可以通過key的值取出你想要的欄位了。我還沒想到更好的辦法,因為剛接觸Hibernate多久,所以大家有更好的辦法歡迎指出。