在JSF datatable中显示Hibernate/JPA结果的原因:java.lang.NumberFormatException:对于输入字符串:";[propertyname]”;
我最初通过以下查询获得在JSF datatable中显示Hibernate/JPA结果的原因:java.lang.NumberFormatException:对于输入字符串:";[propertyname]”;,jsf,jpa,primefaces,datatable,Jsf,Jpa,Primefaces,Datatable,我最初通过以下查询获得列表: 这是如何导致的,我如何解决它?您的Hibernate查询实际上返回的是一个列表,而不是您在未选中的强制转换过程中错误假设的列表 证据在堆栈跟踪中: java.lang.NumberFormatException: For input string: "name" at java.lang.NumberFormatException.forInputString(Unknown source) at java.lang.Integer.parseInt
列表
:
这是如何导致的,我如何解决它?您的Hibernate查询实际上返回的是一个列表,而不是您在未选中的强制转换过程中错误假设的列表
证据在堆栈跟踪中:
java.lang.NumberFormatException: For input string: "name"
at java.lang.NumberFormatException.forInputString(Unknown source)
at java.lang.Integer.parseInt(Unknown source)
at java.lang.Integer.parseInt(Unknown source)
at javax.el.ArrayELResolver.toInteger(ArrayELResolver.java:166)
at javax.el.ArrayELResolver.getValue(ArrayELResolver.java:46)
...
ArrayELResolver
仅当name
的基(因此,{employee}
)表示类似于对象[]
的数组,而不是类似于javabean的Bean
时才涉及ArrayELResolver。EL正在尝试使用名称
通过索引获取数组项,对于第一个项,该项只能是类似so{employee[0]}
的整数。但是,字符串值“name”
不能解析为整数,因此出现此异常
您有两个选项来解决此问题:
- 修改JSF代码,使其包含一个
列表
。使用例如{employee[0]}
,{employee[1]}
等
<p:dataTable var="employee" value="#{bean.employees}">
<p:column id="name" headerText="Name">
<h:outputText value="#{employee[0]}" />
</p:column>
<p:column id="id" headerText="ID" >
<h:outputText value="#{employee[1]}" />
</p:column>
</p:dataTable>
- 修复Hibernate查询以返回真实的
列表
另见:
要返回“真实的列表
”而不是@BalusC所说的列表
,必须指定结果实例的类
getEntityManager().createNativeQuery(
"SELECT * FROM ...",
EntityUser.class
).getResultList();
这里是:EntityUser.class
感谢您的回复,我知道我在从数据库检索记录时提到了该列名,这就是为什么它被检索为Object[]
对。。我的问题通过您的第一个选项解决了..我只提到了{emp[0]}
,而没有提到列名({emp.empname}
)…非常感谢..如何修复查询以返回真实列表?谢谢!
java.lang.NumberFormatException: For input string: "name"
at java.lang.NumberFormatException.forInputString(Unknown source)
at java.lang.Integer.parseInt(Unknown source)
at java.lang.Integer.parseInt(Unknown source)
at javax.el.ArrayELResolver.toInteger(ArrayELResolver.java:166)
at javax.el.ArrayELResolver.getValue(ArrayELResolver.java:46)
...
java.lang.NumberFormatException: For input string: "name"
at java.lang.NumberFormatException.forInputString(Unknown source)
at java.lang.Integer.parseInt(Unknown source)
at java.lang.Integer.parseInt(Unknown source)
at javax.el.ArrayELResolver.toInteger(ArrayELResolver.java:166)
at javax.el.ArrayELResolver.getValue(ArrayELResolver.java:46)
...
<p:dataTable var="employee" value="#{bean.employees}">
<p:column id="name" headerText="Name">
<h:outputText value="#{employee[0]}" />
</p:column>
<p:column id="id" headerText="ID" >
<h:outputText value="#{employee[1]}" />
</p:column>
</p:dataTable>
getEntityManager().createNativeQuery(
"SELECT * FROM ...",
EntityUser.class
).getResultList();