java.lang.ClassCastException:[Ljava.lang.Object;无法强制转换为我的自定义模型类

时间:2017-07-07 14:05:58

标签: object casting typecast-operator

Hello Everyone我有点新的hibernate查询结果和东西根据我的要求我必须从以下查询构建一个json结果我有我的模型类,我将作为json响应返回,query.getResult()返回我的对象​​类,但类型转换对我不起作用是否有任何替代方法。我想用我的自定义模型对象映射查询结果。

 List<Object[]>  result = query.getResultList();
            ListIterator<Object[]> iter = result.listIterator();
            List<ReferFriend> refer=new ArrayList<>();
            while (iter.hasNext()){
                @SuppressWarnings("unchecked")
                ReferFriend referFriend=  (ReferFriend) (Object)iter.next();
                refer.add(referFriend);
            }
            return refer;
        } catch (NoResultException e) {
            return null;
        }
    }

2 个答案:

答案 0 :(得分:0)

iter.next()返回Object [],但您将其转换为ReferFriend

看起来你需要从数组中提取数据才能构造你的对象。 有几种方法可以想到:

  • ReferFriend上创建构造函数,该构造函数以Object[]为参数。内部构造函数从该数组中分配属性(在这种情况下,我建议声明属性 final

  • 使用默认(无参数)构造函数构造ReferFriend,并使用setter从数组中指定属性值。

  • 有工厂

  • 流利的建设者方法

  • 其他

答案 1 :(得分:0)

我得到了这个Now.I将结果存储为对象数组并迭代它。然后我将每个元素显式地转换为我的pojo类元素。我之前遇到的问题是查询结果为大整数的第一个参数我的pojo有Int领域。谢谢@rkosegi。