[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 メーリングリストの案内