[Seasar-user:19829] [s2junit4]excelファイル読み込みでDate項目の解析に失敗することがある

秋山 俊郎 [E-MAIL ADDRESS DELETED]
2010年 5月 31日 (月) 11:23:00 JST


秋山と申します。

以下のエクセルファイルをテストデータとしてDBに書き込みたいのですが、
二件目のデータで次の例外が発生します。

org.seasar.framework.exception.ParseRuntimeException: [ESSR0050]解析に失
敗しました。理由はjava.text.ParseException: Unparseable date:
"2000-01-01 00:00:00.0"

エクセルの1行目と2行目を入れ替えると問題なく書き込むことができます。
何か使い方に間違いなどがあれば、ご教示ください。

インポートするエクセルファイルの内容
	id	start_date	end_date	parent_id
	1	1900/1/1		
	1	2000/1/2	2000/1/1

テーブル定義
	CREATE TABLE  `test`.`test` (
	  `id` int(11) NOT NULL,
	  `start_date` date NOT NULL,
	  `end_date` date DEFAULT NULL,
	  `parent` int(11) DEFAULT NULL,
	  PRIMARY KEY (`id`,`start_date`)
	) ENGINE=InnoDB DEFAULT CHARSET=utf8;

環境
	s2-tiger		2.4.42-SNAPSHOT
	s2-framewor		2.4.42-SNAPSHOT
	s2-extension		2.4.42-SNAPSHOT
    (SNAPSHOTは20100520.103654-5のバージョンです。
     2.4.41でも同様の現象が発生します。)
	mysql-connector-java	5.1.12

DB	mySql 5.1.46-COMMUNITY

org.seasar.framework.exception.ParseRuntimeException: [ESSR0050]解析に失
敗しました。理由はjava.text.ParseException: Unparseable date:
"2000-01-01 00:00:00.0"
	at
org.seasar.framework.util.DateConversionUtil.toDate(DateConversionUtil.java:97)
	at
org.seasar.framework.util.DateConversionUtil.toDate(DateConversionUtil.java:80)
	at
org.seasar.framework.util.DateConversionUtil.toDate(DateConversionUtil.java:62)
	at
org.seasar.framework.util.TimestampConversionUtil.toTimestamp(TimestampConversionUtil.java:57)
	at
org.seasar.extension.jdbc.types.TimestampType.toTimestamp(TimestampType.java:100)
	at
org.seasar.extension.jdbc.types.TimestampType.bindValue(TimestampType.java:72)
	at
org.seasar.extension.jdbc.impl.BasicHandler.bindArgs(BasicHandler.java:193)
	at
org.seasar.extension.jdbc.impl.BasicUpdateHandler.execute(BasicUpdateHandler.java:101)
	at
org.seasar.extension.jdbc.impl.BasicUpdateHandler.execute(BasicUpdateHandler.java:80)
	at
org.seasar.extension.dataset.states.AbstractRowState.execute(AbstractRowState.java:63)
	at
org.seasar.extension.dataset.states.AbstractRowState.update(AbstractRowState.java:39)
	at
org.seasar.extension.dataset.impl.SqlTableWriter.doWrite(SqlTableWriter.java:75)
	at
org.seasar.extension.dataset.impl.SqlTableWriter.write(SqlTableWriter.java:62)
	at org.seasar.extension.dataset.impl.SqlWriter.write(SqlWriter.java:59)
	at
org.seasar.framework.unit.impl.SimpleDataAccessor.writeDb(SimpleDataAccessor.java:166)
	at
org.seasar.framework.unit.impl.DataAccessorImpl.writeDb(DataAccessorImpl.java:70)
	at
org.seasar.framework.unit.impl.SimpleDataAccessor.readXlsAllReplaceDb(SimpleDataAccessor.java:218)
	at
org.seasar.framework.unit.impl.DataAccessorImpl.readXlsAllReplaceDb(DataAccessorImpl.java:112)
	at
org.seasar.framework.unit.impl.TestDataPreparerImpl.prepare(TestDataPreparerImpl.java:143)
	at
org.seasar.framework.unit.impl.TestDataPreparerImpl.prepare(TestDataPreparerImpl.java:101)
	at
org.seasar.framework.unit.impl.SimpleInternalTestContext.prepareTestData(SimpleInternalTestContext.java:266)
	at
org.seasar.framework.unit.S2TestMethodRunner.runTest(S2TestMethodRunner.java:611)
	at
org.seasar.framework.unit.S2TestMethodRunner.runMethod(S2TestMethodRunner.java:250)
	at
org.seasar.framework.unit.S2TestMethodRunner.run(S2TestMethodRunner.java:166)
	at
org.seasar.framework.unit.S2TestClassMethodsRunner.invokeTestMethod(S2TestClassMethodsRunner.java:227)
	at
org.seasar.framework.unit.S2TestClassMethodsRunner.run(S2TestClassMethodsRunner.java:89)
	at
org.seasar.framework.unit.S2TestClassRunner.run(S2TestClassRunner.java:67)
	at org.seasar.framework.unit.Seasar2.run(Seasar2.java:179)
	at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:45)
	at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
	at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
	at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
	at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
	at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Caused by: java.text.ParseException: Unparseable date: "2000-01-01
00:00:00.0"
	at java.text.DateFormat.parse(DateFormat.java:337)
	at
org.seasar.framework.util.DateConversionUtil.toDate(DateConversionUtil.java:95)
	... 33 more


	


Seasar-user メーリングリストの案内