【发布时间】: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[]