Session session=super.getSession();

String hql="select r.city,avg(r.errorcode) from Readlog  r where r.time='"+time+"' group by r.city ";
Query query=session.createQuery(hql);
List<Readlog> readlogs=query.list();
System.out.println(readlogs.size());
for(Readlog readlog : readlogs)
{
System.out.println(readlog.getCity());
}循环取数据的时候老是报错,异常如下:                                java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.company.readlogs.bean.Readlog还有就是我想按Readlog  表的city字段进行分组查询所有怎么写呀?   from  Readlog  r group by r.city  老是报 “group by 不是表达式”    我用的是oracle数据库...
求解!!!    在线等    

解决方案 »

  1.   

    1. cannot be cast to com.company.readlogs.bean.Readlog
    Object对象转换成Readlog类型的对象(即父类对象转换成子类对象是需要强制进行转换的)2. HQL分组,举个例子给你,研究一下吧。(这个例子做的是分组求和)list=this.queryDao.getSessionFactory().getCurrentSession().createCriteria(SalesSlipline.class) 
                            .add(Restrictions.eq("salesslipid.id",returnList.get(i).getId())) 
                            .setProjection(Projections.projectionList(). 
                                add(Projections.sum("amount")). 
                                add(Projections.sum("sum")).                            
                                add(Projections.groupProperty("salesslipid.id"))).list();