【问题标题】:Java, Maven, JSP, JPA - java.lang.NumberFormatException: For input string: "id"Java、Maven、JSP、JPA - java.lang.NumberFormatException:对于输入字符串:“id”
【发布时间】:2020-01-01 04:14:33
【问题描述】:

我正在为工作申请提出挑战。本质上,我需要使用 Java、Maven、JSP 和 JPA 和 Hibernate 来制作 CRUD。每次我尝试在数据库中获取我的咨询的结果列表时,都会返回此错误。 “id”在 DB 中定义为 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 会像往常一样出现在表格中。

【问题讨论】:

  • a) User bean 是什么样的? b) id 在 DB 中是如何定义的?
  • 用户看起来像这样 ``` @Entity @Table(name="usuarios") public class User { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private Long id; ``` 并且“id”在数据库中被定义为int。
  • 只是一个简短的猜测:它与 JPA 无关,但与一些 JSF 绑定有关。添加更多的堆栈跟踪会很好。您使用的是哪个 JSF 版本,我从未见过 h:outputTexttype 属性?请在发布其他信息之前阅读帮助 - 您知道您可以编辑您的问题吗?

标签: java mysql hibernate jsp jpa


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2017-08-29
    • 1970-01-01
    • 2013-08-06
    • 2018-04-01
    • 2013-01-29
    • 2012-12-05
    • 2013-09-04
    • 1970-01-01
    相关资源
    最近更新 更多