在Java中将Object []数组转换为List

时间:2015-03-10 20:18:38

标签: java arrays list primefaces

在我用数据表创建的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()方法,然后迭代将值添加到列表中,但据我所知,它只返回一个固定大小的被支持数组列表。它不会返回值列表。

非常感谢任何帮助。如果我没有提供足够的细节,我表示歉意。谢谢。

2 个答案:

答案 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>并且您没有遇到您提到的问题。