【问题标题】:java.lang.ClassCastException: [Ljava.lang.Object; incompatible with com.spring.model.Instructionjava.lang.ClassCastException:[Ljava.lang.Object;与 com.spring.model.Instruction 不兼容
【发布时间】:2017-01-11 12:16:07
【问题描述】:
public List<Instruction> listPAyment() {
    Session session = this.sessionFactory.getCurrentSession();
    List<Instruction> personsList = (List<Instruction>)session.createSQLQuery(
        "SELECT INSTRUCTIONKEY, BASECURRENCY,STATUSPROC, WHENMODIFIED FROM MyDB.INSTRUCTION"
    ).list();
    EXCEPTION HERE--->    for(Instruction p : personsList){
        System.out.println( "Payment::"+ p.toString()); 
    }
    return personsList;
}

我在上面提到的点收到java.lang.ClassCastException: [Ljava.lang.Object; incompatible with com.spring.model.Instruction 异常,我无法找出在下面的代码中进行转换有什么问题。 我在模型类Instruction中正确添加了toString()

请帮忙

[2016/09/05 15:05:01:991 GMT+02:00] 00000040 ServletWrappe E com.ibm.ws.webcontainer.servlet.ServletWrapper service SRVE0068E: 服务方法之一引发了异常应用程序 [SpringMVCHibernate_war] 中的 servlet [/WEB-INF/views/instruction.jsp]。异常创建:[java.lang.NumberFormatException:对于输入字符串:“instructionKey” 在 java.lang.NumberFormatException.forInputString(NumberFormatException.java:59) 在 java.lang.Integer.parseInt(Integer.java:460) 在 java.lang.Integer.parseInt(Integer.java:510) 在 javax.el.ArrayELResolver.coerce(ArrayELResolver.java:166) 在 javax.el.ArrayELResolver.getValue(ArrayELResolver.java:46) 在 javax.el.CompositeELResolver.getValue(CompositeELResolver.java:55) 在 org.apache.el.parser.AstValue.getValue(AstValue.java:174) 在 org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:283) 在 org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:778) 在 com.ibm._jsp._instruction._jspx_meth_c_forEach_0(_instruction.java:131) 在 com.ibm._jsp._instruction._jspx_meth_c_if_0(_instruction.java:179) 在 com.ibm._jsp._instruction._jspService(_instruction.java:95) 在 com.ibm.ws.jsp.runtime.HttpJspBase.service(HttpJspBase.java:99) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:668) 在 com.ibm.ws.cache.servlet.ServletWrapper.serviceProxied(ServletWrapper.java:307)

Jsp 迭代对象:

      <c:forEach items="${listPersons}" var="instruction">
            <tr>
                <td>${instruction.instructionKey}</td>
                <td>${instruction.statusProc}</td>
                <td>${instruction.baseCurrency}</td> 
                <td>${instruction.whenModified}</td>
            </tr>
        </c:forEach>

where model.addAttribute("instruction", new Instruction()); model.addAttribute("listPersons", this.personService.listPersons());

在控制器中定义。

【问题讨论】:

  • 由于您明确要求从表中获取列,因此结果将是 Object[] 而不是 Instruction
  • 谢谢@Prashanth,试过了但得到 java.lang.NumberFormatException: For input string: "instructionKey" 这个异常
  • 你能发布堆栈跟踪吗?
  • @prasanth,我更新了问题,请看一下。
  • 我不确定如何在 jsp 中迭代返回的 Object[]

标签: java hibernate


【解决方案1】:

您可以从数据库中拉入一个名为 :whatever: 的类,并为该类提供将从数据库中提取的变量,并为其提供一个您可以调用的 toString 方法?也许?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-18
    • 2014-05-09
    相关资源
    最近更新 更多