java - 实现类中的 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.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();

关于java - 实现类中的 ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13145603/

相关文章:

java - 如何在 Hibernate 中有效加载记录

hibernate - 如何在 Spring Data JPA 中使用多个 JPA 持久性上下文?

java - 在Docker中运行jar应用程序时出现重复图层

Java vector : Secure reference to element

java - 如何使用 JAVA Selenium 处理新弹出的浏览器窗口

java - 由 : java. sql.SQLException 引起:用户 'root' @'localhost' 的访问被拒绝(使用密码:YES)

Java Spring JPA 存储库

java - hibernate HQL元素错误

java - 正确部署maven项目

java - HTTPClient错误异常: 400 Bad Request using Spring REST template