List list=new ArrayList();
String queryStr="select office.* from  office join(select * from office order by revert desc) t  on(office.id=t.id) limit 0,"+degree;
Query q=session.createSQLQuery(queryStr);
System.out.println(q.list().size()+"  dixoa");

Iterator it=q.list().iterator();

while(it.hasNext())
{
Office obj=(Office)it.next();
list.add(obj);
}

return list;
报的是
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object;
错误 啊 
大侠帮小弟一下哦,困扰小弟很久了啊

解决方案 »

  1.   

    哪一行报错?
    另外,确认下it.next()返回的是不是一个数组?
      

  2.   

    hibernate用sql语句查询结果为一个对象数组
    报错已经说的很清楚了,强制转型的错误
    Office obj=(Office)it.next(); 这行有问题
    至少如何处理得到的结果,网上有很多实例,自己去查查吧
      

  3.   

    你debug一下 看看Object obj=it.next(); obj究竟是什么类型的 肯定不是 Office类型的
      

  4.   

    Office obj=(Office)it.next(); 
    建议查看此行,取出的类型与Office不相符
      

  5.   

    [Ljava.lang.Object; 
    就是说类型有问题
      

  6.   

    Office obj=(Office)it.next(); 这句有问题
    System.out.println( it.next() );看看打印出来的结果是什么,然后反思一下,看是哪里出现了问题
      

  7.   

      sql语句查询出的结果不是对象数组,而你把结果当对象数组处理的,很显然Office obj=(Office)it.next(); 是有问题,查询后的结果集非 Office对象,解决方案很多,最简单的是自己写一个pojo对象来保持sql查出来的信息,然后在转成对象。
      

  8.   

    返回是 Object[] 对象,你的不是HQL..转换当然出错
      

  9.   

    Office obj=(Office)it.next();  分2行写就可以了
      

  10.   

    sql查出来的结果是map
    你可以用map.get("字段名")来获得
    然后再封装到Office
      

  11.   

    楼主考虑下用泛型 
    List<office> list = new ArrayList<office>();
      

  12.   

    可以试一下instanceof,先检查一下类型
      

  13.   

    Office obj=(Office)it.next(); 类型转换异常!
      

  14.   

    改成List list=new ArrayList(); 
    String queryStr="select {office.*} as ofi   from  office join(select * from office order by revert desc) t  on(office.id=t.id) limit 0,"+degree; 
    Query q=session.createSQLQuery(queryStr); 
    System.out.println(q.list().size()+"  dixoa"); Iterator it=q.addEntity("ofi", Office.class).list().iterator(); while(it.hasNext()) 
    { list.add(it.next()); 
    } return list; 
      

  15.   

    纠正一下
    List list=new ArrayList(); 
    String queryStr="select {office.*}    from  office join(select * from office order by revert desc) t  on(office.id=t.id) limit 0,"+degree; 
    Query q=session.createSQLQuery(queryStr); 
    System.out.println(q.list().size()+"  dixoa"); Iterator it=q.addEntity("office", Office.class).list().iterator(); while(it.hasNext()) 
    { list.add(it.next()); 
    } return list; 
      

  16.   

    谢谢各位大侠
    我自己找到原因了

    String queryStr="select office.* from  office join(select * from office order by revert desc) t  on(office.id=t.id) limit 0,"+degree; 
    Query q=session.createSQLQuery(queryStr); 
    改为
    String queryStr="select office.* from  office join(select * from office order by revert desc) t  on(office.id=t.id) limit 0,"+degree;
    Query q=session.createSQLQuery(queryStr).addEntity(Office.class);
    即在查询时跟上映射类就OK了