ich für eine DB-Einheit Test-Setup-Daten versuche durch eine Tabelle bevölkern, die Spalten des Typs hat TIMESTAMP(6) WITH TIME ZONE
wie folgt:Wie eine Oracle-TIMESTAMP WITH ZONE Feld aufzufüllen DBUnit FlatXmlDataSet mit
<timetable START_TIME="2015-03-01 10.00.00.000000000" END_TIME="2015-03-02 10.00.00.000000000"/>
Aber ich bekomme immer wieder die folgende Ausnahme, wenn ich den Probelauf:
org.dbunit.dataset.NoSuchColumnException: TIMETABLE.START_TIME - (Non-uppercase input column: START_TIME) in ColumnNameToIndexes cache map. Note that the map's column names are NOT case sensitive.
at org.dbunit.dataset.AbstractTableMetaData.getColumnIndex(AbstractTableMetaData.java:117)
at org.dbunit.operation.AbstractOperation.getOperationMetaData(AbstractOperation.java:89)
at org.dbunit.operation.AbstractBatchOperation.execute(AbstractBatchOperation.java:143)
at org.dbunit.operation.CompositeOperation.execute(CompositeOperation.java:79)
at com.github.springtestdbunit.DbUnitRunner.setupOrTeardown(DbUnitRunner.java:194)
at com.github.springtestdbunit.DbUnitRunner.beforeTestMethod(DbUnitRunner.java:66)
at com.github.springtestdbunit.DbUnitTestExecutionListener.beforeTestMethod(DbUnitTestExecutionListener.java:185)
at org.springframework.test.context.TestContextManager.beforeTestMethod(TestContextManager.java:249)
I verschiedene Formate für das Zeitstempel-Feld einschließlich der Zugabe von der Zeitzone versucht + suffix XX: XX 2015-03-01 10.00.00.000000000 +00.00
ohne Erfolg. Ich habe auch versucht, den Test mit dem VM-Argument -Duser.timezone=UTC
auszuführen, aber das half auch nicht.
Weiß jemand, wie dies erreicht werden kann?
EDIT 1
bemerkte ich die folgenden Warnungen in der Konsole:
2016-05-31 14:54:23 WARN SQLHelper:429 - TIMETABLE.START_TIME data type (-101, 'TIMESTAMP(6) WITH TIME ZONE') not recognized and will be ignored. See FAQ for more information.
2016-05-31 14:54:23 WARN SQLHelper:429 - TIMETABLE.END_TIME data type (-101, 'TIMESTAMP(6) WITH TIME ZONE') not recognized and will be ignored. See FAQ for more information.
So ist es wie DBUnit sieht nicht TIMESTAMP WITH TIME ZONE
Datentyp und ignoriert sie nicht unterstützt, damit die NoSuchColumnException
Ausnahme
EDIT 2
Tatsächlich unterstützt dbunit bereits TIMESTAMP
Datentypen über die OracleDataTypeFactory
Klasse. Die Konfiguration würde dann wie folgt aussehen:
<bean id="oracleDataTypeFactory" class="org.dbunit.ext.oracle.OracleDataTypeFactory"/>
<bean id="dbUnitDatabaseConfig" class="com.github.springtestdbunit.bean.DatabaseConfigBean">
<property name="datatypeFactory" ref="oracleDataTypeFactory" />
</bean>
Leider nachdem diese Konfiguration der Datentyp Problem ändert sich immer noch da war, weil DBUnit DatabaseConfig.datatypeFactory Eigenschaft wurde DefaultDataTypeFactory
von DbUnitTestExecutionListener auf die Standardeinstellung wieder zurückgesetzt, die nicht TIMESTAMP unterstützt Datentypen