用hibernate查询 (类为UserInfoPO)只想取出表中的几个字段hql语句为:
select userInfo.userId,userInfo.number,userInfo.name,userInfo.type,userInfo.IDCard from UserInfoPO as userInfo where userInfo.type=:typeIterator<UserInfoPO> iterator = list.iterator(); // list存放查询出来的数据
while (iterator.hasNext()) {
  UserInfoPO item = new UserInfoPO();
  UserInfoPO next = iterator.next();
  item.setUserId(next.getUserId());
  item.setNumber(next.getNumber());
  item.setName(next.getName());
  item.setType(next.getType());
  item.setIDCard(next.getIDCard());
  users.add(item);
}为什么在红色的那行会报下面的错误:
java.lang.ClassCastException: [Ljava.lang.Object;

解决方案 »

  1.   

      UserInfoPO item = new UserInfoPO();  //这行可以去了吧?
      UserInfoPO next = iterator.next(); 
      item.setUserId(next.getUserId()); 
      item.setNumber(next.getNumber()); 
      item.setName(next.getName()); 
      item.setType(next.getType()); 
      item.setIDCard(next.getIDCard()); 
      users.add(item);  
    还有,你的执行语句呢?
      

  2.   

    java.lang.ClassCastException: [Ljava.lang.Object; 
    这个错误:说明你的数据进行赋值时,类型或数据项(属性)不对应
    你仔细检查以下
      

  3.   

    UserInfoPO next = (UserInfoPO )iterator.next(); 
    写成这样
      

  4.   

    hql语句为: 
    select userInfo.userId,userInfo.number,userInfo.name,userInfo.type,userInfo.IDCard from UserInfoPO as userInfo where userInfo.type=:type 
    Hibernate中这样查询返回的结果集合中封装的并非某个POJO对象,而是封装了数组
    因此你在取值时也应该这样:
    hql语句为: 
    select userInfo.userId,userInfo.number,userInfo.name,userInfo.type,userInfo.IDCard from UserInfoPO as userInfo where userInfo.type=:type Iterator iterator = list.iterator(); // list存放查询出来的数据 
    while (iterator.hasNext()) {  
      UserInfoPO item = new UserInfoPO();
      Object[] next = iterator.next(); 
      item.setUserId(Integer.parseInt(next[0].toString())); 
      item.setNumber(Integer.parseInt(next[1].toString())); 
      item.setName(next[2].toString()); 
      item.setType(Integer.parseInt(next[3].toString())); 
      item.setIDCard(Integer.parseInt(next[4].toString())); 
      users.add(item);