首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >给我NumberFormatException的Hibernate文本表

问给我NumberFormatException的Hibernate文本表
EN

Stack Overflow用户
提问于 2016-03-23 18:58:57
回答 1查看 141关注 0票数 0

我正在尝试使用Hibernate导入CSV文件,但它已经在第一行给出了一个NumberFormatException。这是我的脚本:

代码语言:javascript
复制
CREATE SCHEMA PUBLIC AUTHORIZATION DBA
CREATE TEXT TABLE TKONTAKTE(KNUMMER INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 1) NOT NULL PRIMARY KEY,KVORNAME VARCHAR(255) NOT NULL,KNACHNAME VARCHAR(255) NOT NULL,KSTRASSENUMMER VARCHAR(255) NOT NULL,KPOSTLEITZAHLORT VARCHAR(255) NOT NULL,KGEBURTSDATUM DATE,KNOTIZ LONGVARCHAR,KMAENNLICH CHAR(1) NOT NULL,KEMAIL VARCHAR(255) NOT NULL,CONSTRAINT SYS_CT_46 UNIQUE(KVORNAME,KNACHNAME))
SET TABLE TKONTAKTE SOURCE "Kontakte.csv;fs=\semi;ignore_first=true"
ALTER TABLE TKONTAKTE ALTER COLUMN KNUMMER RESTART WITH 1
CREATE USER SA PASSWORD ""
GRANT DBA TO SA
SET WRITE_DELAY 10

这是我的配置:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC 
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
  <session-factory>
    <property name="connection.url">jdbc:hsqldb:file:testdb</property>
    <property name="connection.username">SA</property>
    <property name="connection.password"></property>
    <property name="connection.driver_class">org.hsqldb.jdbcDriver</property>
    <property name="dialect">org.hibernate.dialect.HSQLDialect</property>
    <property name="connection.shutdown">true</property>
      <property name="transaction.factory_class">
      org.hibernate.transaction.JDBCTransactionFactory
    </property>

    <property name="current_session_context_class">thread</property>
    <property name="transaction.auto_close_session">true</property>

    <property name="show_sql">true</property>
    <property name="hbm2ddl.auto">update</property>
    <mapping resource="net/gobbz/kontakte/model/Kontakt.hbm.xml" />
  </session-factory>
</hibernate-configuration>

它抛出以下错误:

代码语言:javascript
复制
11:53:57,813  WARN JDBCExceptionReporter:48 - SQL Warning: -98, SQLState: S1000
11:53:57,813  WARN JDBCExceptionReporter:49 -  bad TEXT table source file - line number: 1 java.lang.NumberFormatException: For input string: "Petra;Pichler;Kennedystr. 279;39055 Leifers;19.04.1988;;FALSCH;petra.pichler@gmail.com"
11:53:57,875 DEBUG SQL:346 - insert into tkontakte (kvorname, knachname, kstrasseNummer, kpostleitzahlOrt, kgeburtsdatum, knotiz, kmaennlich, kemail, knummer) values (?, ?, ?, ?, ?, ?, ?, ?, null)
Hibernate: insert into tkontakte (kvorname, knachname, kstrasseNummer, kpostleitzahlOrt, kgeburtsdatum, knotiz, kmaennlich, kemail, knummer) values (?, ?, ?, ?, ?, ?, ?, ?, null)
11:53:57,875  WARN JDBCExceptionReporter:71 - SQL Error: -32, SQLState: S1000
11:53:57,875 ERROR JDBCExceptionReporter:72 - The table data is read only in statement [insert into tkontakte (kvorname, knachname, kstrasseNummer, kpostleitzahlOrt, kgeburtsdatum, knotiz, kmaennlich, kemail, knummer) values (?, ?, ?, ?, ?, ?, ?, ?, null)]
11:53:57,875 ERROR TestKontakte:40 - org.hibernate.exception.GenericJDBCException could not insert: [net.gobbz.kontakte.model.Kontakt]

这里是Kontakt.hbm.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

<hibernate-mapping package="net.gobbz.kontakte.model">
  <class name="Kontakt" table="tkontakte">
    <id name="nummer" column="knummer">
      <generator class="native"/>
    </id>
    <properties name="vornameNachname" unique="true">
        <property name="vorname" column="kvorname"
            type="string" not-null="true"/>
        <property name="nachname" column="knachname" 
            type="string" not-null="true"/>
    </properties>
    <property name="strasseNummer" column="kstrasseNummer" 
        type="string" not-null="true"/>
    <property name="postleitzahlOrt" column="kpostleitzahlOrt" 
        type="string" not-null="true"/>
    <property name="geburtsdatum" column="kgeburtsdatum" type="date"/>
    <property name="notiz" column="knotiz" type="text"/>
    <property name="maennlich" column="kmaennlich" type="yes_no" not-null="true"/>
    <property name="email" column="kemail" type="string" not-null="true"/>
  </class>
</hibernate-mapping>
EN

回答 1

Stack Overflow用户

发布于 2016-03-24 01:08:14

您的表列与DSV文件第一行中的数据不匹配。

日期列的值格式不正确KMAENNLICH CHAR(1)列的文本为FALSCH,这是too long

将date列的类型更改为varchar(8)。对列使用正确的顺序。只有当文本源正确并且SET TABLE TKONTAKTE source语句没有抛出异常时,才能执行update语句。它报错该表是只读的,因为该表没有有效的文本源。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36176292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档