我对java和使用netbeans开发java应用程序都很陌生。
我有密码:
方法在userbean中:
public List userList() {
Query q = em.createNativeQuery("select username,address from tbuser");
Iterator i = q.getResultList.iterator;
ArrayList<UserState> userinfo = new ArrayList<UserState>();
while (i.hasNext()) {
Vector result = (Vector) i.next(); // <- HERE
UserState us = new UserState();
us.setName((String) result.get(0));
us.setAddress((String) result.get(1));
userinfo.add(us);
}
return userinfo;
}我使用这种方法构造jsf数据表,并在netbeans6.5和glassfish2中很好地工作。
但是,当我使用相同的方法时,除了在netbean 6.9中将向量更改为arraylist外,
还有玻璃鱼3--我得到了班上的演员
运行时异常:不能将对象转换为java.util.list;
有人知道怎么做吗?谢谢。。
发布于 2011-10-27 15:20:04
我怀疑代码是否像这样工作,像hasNext()这样的方法缺少括号。如果您复制了代码,请再次这样做,因为让我们猜测您的代码不会提高答案的质量。
你的问题是你想要从向量中访问一个元素。但是向量中的对象类型不是Vector,而是一种不同类型的集合。您希望检索该向量的一个元素(这非常好),但随后尝试将其转换为Vector,这将失败。
由于我无法在运行时看到向量中的哪种类型的对象,所以首先可以在当前错误发生的行之前使用System.out.println(i.next().getClass().getCanonicalName());。它打印向量元素的类型。
发布于 2013-11-09 12:21:29
嗯,最好是直接在JPA查询中创建DTO:
public List userList() {
Query q = em.createNativeQuery("SELECT new UserState(username,address) FROM tbuser");
return q.getResultList();
}类似这样的东西(这不是经过验证的代码)
https://stackoverflow.com/questions/7918067
复制相似问题