Hibernate count映射問題

問:hibernate, select name, count(*) from table group by name。這句話應該怎麼用HQL語句執行?或者在hibernate中該怎麼查出每個name對應的count?

 

答:String hql = "select name, count(*) from table group by name";   //跟sql語句差不多的,不過這裏的name是類的屬性,table 是類名,因爲HQL是面向對象的查詢的語言。

首先要獲得session,你懂的,
然後  Query query = session.createQuery(hql);
List list = query.list();
獲取list裏面的name :
Iterator it = lits.iterator();
if(it.hasNext()){
    Object[]  obj = (Object[]) it.next();
    String name = obj[0];
    int count = obj[1];
}


在項目開發中的具體情況:

//關鍵是處理count映射問題。120221 hjl  
                String q = "select userId, nickName, count(id)  from BbscsLogintimes  where LoginYear = ? and LoginMonth = ?  group by userId order by col_2_0_ desc";  
     
                Query query = session.createQuery(q);  
                query.setLong(0, Long.valueOf(year));  
                query.setLong(1, Long.valueOf(mon));    
                List list = query.list();      
                  
                //封裝  
                List list2 = new ArrayList();  
                BbscsLogintimes logintimes= null;  
                Iterator it = list.iterator();  
                long j = 1;  
                while(it.hasNext()){  
                    logintimes = new BbscsLogintimes();  
                    Object[]  obj = (Object[]) it.next();  
                    logintimes.setOrderId(j);  
                    logintimes.setOrderName((String) obj[1]);  
                    logintimes.setOrderNum((Integer)obj[2]);  
                    list2.add(logintimes);  
                    j++;  
                }  

以上轉載自:http://simpledev.iteye.com/blog/1433282


此爲本人項目中的具體代碼:(***DaoImpl.java)

需求:查詢出 ××人(字段:userId)購買了 ×× (字段:number)注幸運碼

@Override
    public List<UserLottery> listUserLotteryQuantity(int drawNum) {
       Query query =  entityManager.createNativeQuery("SELECT ul.user_id, count(ul.user_id) AS numQuantity FROM user_lottery_history ul WHERE ul.draw_num =:drawNum GROUP BY ul.user_id ORDER BY ul.user_lottery_history_id DESC LIMIT 10")
               .setParameter("drawNum", drawNum);
       List list = query.getResultList();
       List<UserLottery> ulList = new ArrayList<UserLottery>();
       UserLottery ul = null;
       User user = null;
       Iterator it = list.iterator(); 
       while(it.hasNext()) {
           Object[]  obj = (Object[]) it.next();  
           ul = new UserLottery();
           user = new User();
           user.setUserId(((BigInteger) obj[0]).longValue());
           ul.setUser(user);
           ul.setNumber(obj[1].toString());
           ulList.add(ul);
       }
       return ulList;
    }


發佈了25 篇原創文章 · 獲贊 7 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章