我查询出来一个结果集  
这个结果集是一个object数组   查询出来的结果[1,张三,java教程]
                  SQLQuery query = session.createSQLQuery(hql.toString());
List list = query.list();
for (int i = 0; i < list.size(); i++) {
SearchTeacherVo searchTeacher = new SearchTeacherVo();
Object[] obj = (Object[])list.get(i);
searchTeacher.setTeacherId((Long)obj[0]);
searchTeacher.setTeacherName((String)obj[1]);
searchTeacher.setCourseName((String)obj[2]);
                           list.add(searchTeacher);
                     }这个能查出来结果  但是到searchTeacher.setTeacherId((Long)obj[0]);这行报错了
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long 
    com.woyo.training.dao.search.impl.CourseSearchDaoImpl.findAllTeacher(CourseSearchDaoImpl.java:178)Integer cannot be cast to long    我teacherId这个此段确实是Long类型的啊 !!!
这是为什么呢?
各位大虾帮帮忙!

解决方案 »

  1.   

    我友?java.lang.Integer cannot be cast to java.lang.Long  
    你那字段是Long类型?
      

  2.   

    你在VO中定义的TeacherId是什么型的?
      

  3.   

    不能这样强制转换的
    long可以转化为int
    Long不能转化为Integer
      

  4.   

    setTeacherId 这个方法需要的是一个Long类型的数据,但是Object[0]是一个Integer类型的,Integer--》Long是属于向上转型,不能默认转的。LZ可以这样。   setTeacherId(Long.valueOf(String.valueOf(Object[0])))
      

  5.   

    不会吧  世界这么小?
    难道你也是?我的这个字段确实是LONG类型的啊! 
    我还特别用了addScalar  制定了每个字段的类型!
      

  6.   

    addScalar  这个方法是制定变量类型的吗?  我都怀疑了!   每次制定都会报错!  郁闷了!
      

  7.   

    先强制到Integer,再Long.valueOf()试试
      

  8.   

    类型转换错误java.lang.Integer cannot be cast to java.lang.Long  你看下你数据库中定义的什么的,你再转成什么的
      

  9.   

    最好不要用(int)a这种方式强转
    容易出问题
      

  10.   

    看看哪里写成Integer类型了没 试着强制转换以下