Java 实现类中的ClassCastException
为什么我会得到ClassCastException: 包装异常:Java 实现类中的ClassCastException,java,spring,hibernate,classcastexception,Java,Spring,Hibernate,Classcastexception,为什么我会得到ClassCastException: 包装异常: java.lang.ClassCastException: com.avt.model.CasePmt at com.avt.dao.impl.CasePmtDaoImpl.findAllCasePmt(CasePmtDaoImpl.java:68) at com.avt.ViewCasePmtAction.view(ViewCasePmtAction.java:127) at sun.reflect.Na
java.lang.ClassCastException: com.avt.model.CasePmt
at com.avt.dao.impl.CasePmtDaoImpl.findAllCasePmt(CasePmtDaoImpl.java:68)
at com.avt.ViewCasePmtAction.view(ViewCasePmtAction.java:127)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280)
at gov.pbgc.spectrum.util.SpectrumLookupDispatchAction.execute(SpectrumLookupDispatchAction.java:113)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
我的实现类是
public List<CasePmt> findAllCasePmt() {
List list;
list = getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query q = session
.getNamedQuery("findAll");
return q.list();
}
});
Iterator it = list.iterator();
List<CasePmt> l = new ArrayList<CasePmt>();
CasePmt voObj;
while (it.hasNext()) {
voObj = new CasePmt();
Object[] objs = (Object[]) it.next();
// System.out.print("\n" + objs[0].toString());
if (objs[2] != null) {
voObj.setCaseTxNum(objs[1].toString());
}
.......................
}
l.add(voObj);
}
return l;
}
我的行动呼吁是:
List<CasePmt> CsList =
CasePmtBo.getCaseDao().findAllCasePmt();
我在第68行得到错误,即Object[]objs=Object[]it.next;线
为什么我会遇到这个问题
有什么意见吗..我今天再次讨论这个问题,面对这个问题 我假设,您的findAll查询是检索所有CasePmt对象。在这种情况下,我认为您在下面的行中遇到了问题:
Object[] objs = (Object[]) it.next();
因为迭代器将返回CasePmt对象
尝试将其作为打击投射到CasePmt对象:
CasePmt casePmt = (CasePmt)it.next();
我假设findAll查询是检索所有CasePmt对象。在这种情况下,我认为您在下面的行中遇到了问题:
Object[] objs = (Object[]) it.next();
因为迭代器将返回CasePmt对象
尝试将其作为打击投射到CasePmt对象:
CasePmt casePmt = (CasePmt)it.next();
将您的列表分层为
List<Object[]> list;
将您的列表分层为
List<Object[]> list;
一般来说,当你有一个ClassCastException你不理解,而不是
Object[] objs = (Object[]) it.next();
[...]
试一试
一般来说,当你有一个ClassCastException你不理解,而不是
Object[] objs = (Object[]) it.next();
[...]
试一试
我将其转换为CasePmt,但仍然在同一行中获得相同的异常。@JNPW:您可以共享您的findAll查询吗?它的Select*来自JTL.Case_VWand在entity类中:@entity@namedquerys{@NamedQueryname=findAll,query=来自CasePmt}@JNPW:不确定您的第一个查询,但如果您使用的是FROM CasePmt,那么它必须是CasePmt对象。要进行验证,请更改:Object[]objs=Object[]it.next;to Object objs=it.next;然后将类名打印为System.out.printlnobjs.getClass.getName;我将其转换为CasePmt,但仍然在同一行中获得相同的异常。@JNPW:您可以共享您的findAll查询吗?它的Select*来自JTL.Case_VWand在entity类中:@entity@namedquerys{@NamedQueryname=findAll,query=来自CasePmt}@JNPW:不确定您的第一个查询,但如果您使用的是FROM CasePmt,那么它必须是CasePmt对象。要进行验证,请更改:Object[]objs=Object[]it.next;to Object objs=it.next;然后将类名打印为System.out.printlnobjs.getClass.getName;