java.lang.NumberFormatException : For input string XX while fetching the data from the database

标签 java spring hibernate jdbc numberformatexception

我正在尝试从数据库中获取数据。我收到以下错误。

[Request processing failed; nested exception is org.hibernate.exception.GenericJDBCException: An error occurred while converting the nvarchar value to JDBC data type INTEGER.] with root cause
java.lang.NumberFormatException: For input string: "XX"

我知道它正在尝试将我的字符串转换为整数。但我不明白为什么要这样做,因为我的数据类型只是字符串。

我的代码如下:

型号:

package com.a.spring.models;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;


@Entity
@Table(name="CapacityConstraint")
public class CapacityConstraint {


    private int DocEntry;
    private String OpCode;
    private String RsrcCd;
    private String Type;
    private Operation operation;

    @Id
    @Column(name="DocEntry")
    @GeneratedValue(strategy = GenerationType.AUTO)
    public int getDocEntry() {
        return DocEntry;
    }


    public void setDocEntry(int DocEntry) {
        this.DocEntry = DocEntry;
    }


    @Column(name="OpCode")
    public String getOpCode() {
        return OpCode;
    }


    public void setOpCode(String opCode) {
        OpCode = opCode;
    }


    @Column(name="RsrcCd")
    public String getRsrcCd() {
        return RsrcCd;
    }


    public void setRsrcCd(String rsrcCd) {
        RsrcCd = rsrcCd;
    }


    @Column(name="Type")
    public String getType() {
        return Type;
    }


    public void setType(String type) {
        Type = type;
    }

    @OneToOne
    @JoinColumn(name = "OpCode", nullable = false, insertable = false, updatable = false)
    public Operation getOperation() {
        return operation;
    }


    public void setOperation(Operation operation) {
        this.operation = operation;
    }


}

运营模式:

@Entity
@Table(name="[@IS_OPRMASTER]")
public class Operation {
    private int docEntry;
    private String OpCode;
    private String OpName;

    @Id
    @Column(name="DocEntry")

    public int getDocEntry() {
        return docEntry;
    }
    public void setDocEntry(int docEntry) {
        this.docEntry = docEntry;
    }

    @Column(name="U_OpCode")
    public String getOpCode() {
        return OpCode;
    }
    public void setOpCode(String opCode) {
        OpCode = opCode;
    }
    @Column(name="U_OpName")
    public String getOpName() {
        return OpName;
    }
    public void setOpName(String opName) {
        OpName = opName;
    }

}

获取数据的函数:

@Override
    public List<CapacityConstraint> getList() {
        Session session = sessionFactory.getCurrentSession();
        Query query= session.createSQLQuery("SELECT * FROM CapacityConstraint order by docEntry").addEntity(CapacityConstraint.class);
        List <CapacityConstraint> d=query.list();
        return d;
    }

表容量约束

CREATE TABLE [dbo].[CapacityConstraint](
    [DocEntry] [numeric](18, 0) IDENTITY(1,1) NOT NULL,
    [OpCode] [nvarchar](50) NULL,
    [RsrcCd] [nvarchar](50) NULL,
    [Type] [nvarchar](50) NULL,
     CONSTRAINT [PK_CapacityConstraint] PRIMARY KEY CLUSTERED 
(
    [DocEntry] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

表操作

CREATE TABLE [dbo].[@IS_OPRMASTER](
    [DocEntry] [int] NOT NULL,
    [U_OpCode] [nvarchar](20) NULL,
    [U_OpName] [nvarchar](100) NULL,
 CONSTRAINT [KIS_OPRMASTER_PR] PRIMARY KEY CLUSTERED 
(
    [DocEntry] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

堆栈跟踪:

Aug 04, 2016 10:52:36 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [kendo] in context with path [/GanttView] threw exception [Request processing failed; nested exception is org.hibernate.exception.GenericJDBCException: An error occurred while converting the nvarchar value to JDBC data type INTEGER.] with root cause
java.lang.NumberFormatException: For input string: "PTHP"
    at java.lang.NumberFormatException.forInputString(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at java.lang.Integer.valueOf(Unknown Source)
    at com.microsoft.sqlserver.jdbc.DDC.convertStringToObject(DDC.java:291)
    at com.microsoft.sqlserver.jdbc.DDC.convertStreamToObject(DDC.java:419)
    at com.microsoft.sqlserver.jdbc.ServerDTVImpl.getValue(dtv.java:2007)
    at com.microsoft.sqlserver.jdbc.DTV.getValue(dtv.java:175)
    at com.microsoft.sqlserver.jdbc.Column.getValue(Column.java:113)
    at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getValue(SQLServerResultSet.java:1982)
    at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getValue(SQLServerResultSet.java:1967)
    at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getInt(SQLServerResultSet.java:2219)
    at org.apache.commons.dbcp.DelegatingResultSet.getInt(DelegatingResultSet.java:220)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.hibernate.engine.jdbc.internal.proxy.AbstractResultSetProxyHandler.continueInvocation(AbstractResultSetProxyHandler.java:104)
    at org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81)
    at com.sun.proxy.$Proxy44.getInt(Unknown Source)
    at org.hibernate.type.descriptor.sql.IntegerTypeDescriptor$2.doExtract(IntegerTypeDescriptor.java:66)
    at org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:65)
    at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:269)
    at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:265)
    at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:238)
    at org.hibernate.type.ManyToOneType.hydrate(ManyToOneType.java:157)
    at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2807)
    at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1545)
    at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1477)
    at org.hibernate.loader.Loader.getRow(Loader.java:1377)
    at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:644)
    at org.hibernate.loader.Loader.doQuery(Loader.java:854)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:293)
    at org.hibernate.loader.Loader.doList(Loader.java:2382)
    at org.hibernate.loader.Loader.doList(Loader.java:2368)
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2198)
    at org.hibernate.loader.Loader.list(Loader.java:2193)
    at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:331)
    at org.hibernate.internal.SessionImpl.listCustomQuery(SessionImpl.java:1780)
    at org.hibernate.internal.AbstractSessionImpl.list(AbstractSessionImpl.java:229)
    at org.hibernate.internal.SQLQueryImpl.list(SQLQueryImpl.java:156)
    at com.kendoui.spring.models.CapacityContraintDaoImpl.getList(CapacityContraintDaoImpl.java:25)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
    at com.sun.proxy.$Proxy28.getList(Unknown Source)
    at com.kendoui.spring.controllers.CapacityContraintController.read(CapacityContraintController.java:51)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:212)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:827)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)

它给出了操作码错误。如果我从容量约束模型中删除操作模型,那么它可以正常工作,不会出现任何错误。但如果我包含它,它就会抛出错误。 所以我认为问题出在 @joinColumn 语句上。

如果有人能解决我的问题,我将非常感激。

提前致谢。

最佳答案

我认为您正在用相同的名称命名 2 列,

@Column(name="OpCode")
public String getOpCode() {
return OpCode;
}


@OneToOne
@JoinColumn(name = "OpCode", nullable = false, insertable = false, updatable = false)
public Operation getOperation() { return operation; }

一个用于对象引用(外键),一个用于字符串,因此其中之一尝试将外键转换为整数格式,另一者尝试将其转换为字符串格式。

关于java.lang.NumberFormatException : For input string XX while fetching the data from the database,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38758651/

相关文章:

java - 查询 HQL 查询结果时 PersistentBag.toString() stackoverflow 错误

java - Java中对象的初始化是线程安全的吗

spring - 如何保证不同编程语言的前后端对象一致性?

mysql - Hibernate:如何创建两个表的关系?

java - 如何从另一个类中的ArrayList <List> 获取数据?

java - SpannableString 可以序列化吗?

java - 在 Spring Boot Rest 中将 GET 请求参数与 DTO 对象映射时出现问题

java - 带有 spring bean 的 MDB 不会从另一个包 Autowiring bean

java - spring-data postgres 事务隔离问题

Java hibernate 有条件地将注释应用于字段?