我正在为求职提出挑战。本质上,我需要使用带有Hibernate的Java,Maven,JSP和JPA进行CRUD。每当我尝试在数据库中获取我的咨询的resultList时,都会返回此错误。在数据库中,“ id”被定义为int。
"ago 27, 2019 9:45:18 PM com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException
GRAVE: Error Rendering View[/home.xhtml]
java.lang.NumberFormatException: For input string: "id"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)[...]"
"ago 27, 2019 9:45:18 PM org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet [Faces Servlet] in context with path [/desafiosefaz] threw exception [For input string: "id"] with root cause
java.lang.NumberFormatException: For input string: "id"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)[...]"
我试图通过使用long类型来更改User类中id的类型,但是错误仍然发生,我真的不知道发生了什么。
那是用户
package desafiosefaz.model;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="usuarios")
public class User {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@Column
private String login;
@Column
private String nome;
@Column
private String email;
@Column
private String senha;
public Long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
@Override
public String toString() {
return "User [id=" + id + ", nome=" + nome + ", login=" + login + ", email=" + email + "]";
}
}
那是我的DAO
public List<User> listarUsuarios() {
List<User> listaUsuarios = new ArrayList<>();
Query q = entity.createQuery("SELECT id, nome, login, email FROM User ORDER BY nome DESC");
listaUsuarios = q.getResultList();
return listaUsuarios;
}
那是豆子
public List<User> listarUsuarios() {
UserDAO userDAO = new UserDAO();
return userDAO.listarUsuarios();
}
那是xhtml
<h:dataTable value="#{userBean.listarUsuarios()}" var="usuario" border="1">
<h:column>
<f:facet name="header">ID</f:facet>
<h:outputText type="int" value="#{usuario.id}"></h:outputText>
</h:column>
<h:column>
<f:facet name="header">Nome</f:facet>
<h:outputText value="#{usuario.nome}"></h:outputText>
</h:column>
<h:column>
<f:facet name="header">Login</f:facet>
<h:outputText value="#{usuario.login}"></h:outputText>
</h:column>
</h:dataTable>
我希望ID会像往常一样在表格中弹出。
答案 0 :(得分:0)
还有另一种情况,当您这次在后台提交from / data时,其转换数据为String,因此在执行查询之前将id-String转换为int