Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中将对象[]数组转换为列表_Java_Arrays_List_Primefaces - Fatal编程技术网

在java中将对象[]数组转换为列表

在java中将对象[]数组转换为列表,java,arrays,list,primefaces,Java,Arrays,List,Primefaces,在我使用datatable创建的primefaces 3.5表单上,rowKey值没有作为列表返回,因此我得到以下错误: JBWEB000309: type JBWEB000066: Exception report JBWEB000068: message For input string: "foreignPartyId" JBWEB000069: description JBWEB000145: The server encountered an internal error that

在我使用datatable创建的primefaces 3.5表单上,rowKey值没有作为列表返回,因此我得到以下错误:

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[]数组而不是列表中的值填充datatable。Object[]数组实际上是使用createNativeQuery方法查询Oracle数据库的getResultList()中的值

我的问题是:如何将Object[]数组中的值转换为列表,以便填充datatable

我尝试过使用Arrays.toList()方法,然后将值添加到列表中进行迭代,但我知道这只会返回一个固定大小的备份数组列表。它不返回值列表

任何帮助都将不胜感激。如果我没有提供足够的细节,我深表歉意。谢谢。

尝试使用ArrayList:

ArrayList<Object> list = new ArrayList(Arrays.asList(yourArray));

例如,如果您正在查询多个实体,并且结果无法自动映射到现有实体类,则
getResultList
方法将返回一个
列表

为了避免这一点,您可以考虑JPA查询中的构造函数表达式:
Query query = getEntityManager()
  .createQuery("SELECT NEW my.Foo(a.id, b.somethingelse) FROM --- ");

getResultList()
方法现在将返回一个
列表
,您不会遇到您提到的问题。

谢谢您的回复。您能在JPA查询示例中展开构造函数表达式的“my.Foo”部分吗?我不知道如何翻译,以适应我的情况。谢谢。“Foo”在这里只是某种数据传输对象的虚拟名称。只需创建一个POJO,其中包含要在DataTable中显示的所有字段谢谢您的响应。我想知道你是说数组而不是数组。**toList**吗?我尝试使用Arrays.asList,但仍然出现错误。你能澄清一下吗?再次感谢!!:-)这是“asList()”,我的错:谢谢你注意到这个错误。是否确定对象[]表示查询结果,而不是查询返回的一行?如果是这样的话,那么您就不能向对象数组添加元素,因为这将意味着尝试更改表数据。好问题。事实上,你让我重新思考我的问题。这个特定的查询可能只返回一行。所以,实际上我想知道是否应该使用getSingleResult()而不是getResultList()。不管是哪种方式,我想我仍然需要弄清楚如何获取返回的结果集并填充数据表。
Query query = getEntityManager()
  .createQuery("SELECT NEW my.Foo(a.id, b.somethingelse) FROM --- ");