Java,Maven,JSP,JPA-java.lang.NumberFormatException:对于输入字符串:“ id”

时间:2019-08-28 01:06:22

标签: java mysql hibernate jsp jpa

我正在为求职提出挑战。本质上,我需要使用带有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会像往常一样在表格中弹出。

1 个答案:

答案 0 :(得分:0)

还有另一种情况,当您这次在后台提交from / data时,其转换数据为String,因此在执行查询之前将id-String转换为int