Hibernate文本表给我NumberFormatException

Hibernate文本表给我NumberFormatException,hibernate,hsqldb,Hibernate,Hsqldb,我正在尝试使用Hibernate导入CSV文件,但它在第一行中已经给了我一个NumberFormatException。这是我的剧本: 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,

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

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
这是我的配置:

<?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>
这里是Kontakt.hbm.xml

<?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>

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

  • 日期列的值格式不正确(1988-04-19)
  • Kmannlich CHAR(1)列的文本为FALSCH,太长

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

能否请您共享
Kontakt.hbm.xml
?您的表似乎处于只读模式。
testdb
是只读的还是具有定义为只读的
testdb.properties
属性?我不知道如何控制testdb是否为只读,但testdb.properties具有readonly=false您可以尝试在表名tkontakte之前使用架构名进行查询吗?这个表有主键还是不可为空的唯一键?如果不是,我建议你添加主键。我怎么做?它有一个主键
<?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>