2016-03-23 6 views
0

Hibernateを使用してCSVファイルをインポートしようとしていますが、すでに最初の行にNumberFormatExceptionがあります。これは私のスクリプトです:Hibernate Textテーブル私に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 

そして、これは私の設定です: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> 
ここ

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;[email protected]" 
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] 

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

それは次のようなエラーがスローされます

+0

「 '' 'Kontakt.hbm.xml'''を共有できますか?あなたのテーブルは読み取り専用モードのようです。 –

+0

'' 'testdb'''は読み取り専用であるか、または' 'testdb.properties'''を読み取り専用として定義していますか? –

+0

testdbが読み取り専用であるが、testdb.propertiesにreadonly = falseがある場合、どのように制御できるか分かりません。 – ToTom

答えて

0

あなたのテーブルの列はマットではありませんDSVファイルの最初の行のデータを取得します。

  • 日付列の値が正しくフォーマットされていません(1988年4月19日)
  • KMAENNLICH CHARのテキスト(1)カラムが

変更長すぎるFALSCH、ありますvarchar(8)の日付列の型。列の正しい順序を使用してください。テキストソースが正しく、SET TABLE TKONTAKTE SOURCEステートメントに例外がスローされない場合のみ、更新ステートメントを実行できます。テーブルには有効なテキストソースがないため、読み込み中のテーブルについて不平を言っています。

関連する問題