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;
    }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值