在我用数据表创建的primefaces 3.5表单上,rowKey值没有作为List返回,因此我收到以下错误:
JBWEB000309: type JBWEB000066: Exception report
JBWEB000068: message For input string: "foreignPartyId"
JBWEB000069: description JBWEB000145: The server encountered an internal error that prevented it from fulfilling this request.
JBWEB000070: exception
javax.servlet.ServletException: For input string: "foreignPartyId"
javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)
JBWEB000071: root cause
java.lang.NumberFormatException: For input string: "foreignPartyId"
java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
java.lang.Integer.parseInt(Integer.java:492)
java.lang.Integer.parseInt(Integer.java:527)
javax.el.ListELResolver.toInteger(ListELResolver.java:407)
javax.el.ListELResolver.getValue(ListELResolver.java:199)
...
我知道原因是因为我试图使用Object []数组中的值而不是List来填充数据表。 Object []数组实际上是来自 getResultList()的值,使用 createNativeQuery 方法来查询Oracle数据库。
我的问题是:如何将Object []数组中的值转换为List,以便填充数据表?
我尝试过使用Arrays.toList()方法,然后迭代将值添加到列表中,但据我所知,它只返回一个固定大小的被支持数组列表。它不会返回值列表。
非常感谢任何帮助。如果我没有提供足够的细节,我表示歉意。谢谢。
答案 0 :(得分:7)
尝试使用ArrayList:
ArrayList<Object> list = new ArrayList(Arrays.asList(yourArray));
然后使用
将所需的任何元素添加到列表中list.add(newItem)
答案 1 :(得分:1)
如果您要查询多个实体并且结果无法自动映射到现有实体类,getResultList
方法会返回List<Object[]>
。
为避免这种情况,您可以在JPA查询中考虑构造函数表达式,如下所示:
Query query = getEntityManager()
.createQuery("SELECT NEW my.Foo(a.id, b.somethingelse) FROM --- ");
getResultList()
方法现在将返回List<Foo>
并且您没有遇到您提到的问题。