我正在尝试从我的数据库中的特定列检索记录,在finder
中编写entitybean
方法后,我从会话bean Class Cast Exception: java.lang.String cannot be cast to packagename.PaymentsLocal
收到错误。下面是我的会话bean类
ArrayList a = new ArrayList();
Collection col = null;
try{
col = plh.findByAllSessions();
Iterator i = col.iterator();
while(i.hasNext()){
pl = (PaymentsLocal)i.next();
a.add(new paymenthelper( pl.getSession()));
}
} catch (Exception e) {
System.out.println("viewing all sessions"+e.getMessage());
}
return a;
}
答案 0 :(得分:0)
这些行隐式设置Iterator<String>
,因为您在plh.findByAllSessions()
中返回的任何集合都是字符串集合。
col = plh.findByAllSessions();
Iterator i = col.iterator();
因此,这一行试图强制String到PaymentsLocal对象,这是不可能的,导致ClassCastException。
pl = (PaymentsLocal)i.next();
这是因为i.next()
返回集合类型的对象。