Ich verwende die neueste Version von DBUnit (2.4.7) auf Oracle 11GR2. Ich benutze Java 6 (1.6.0_15) und die neueste Version von Oracle's Client jar (jdbc6.jar)DBunit generiert java.lang.ClassCastException: java.lang.String kann nicht in oracle.sql.CLOB umgewandelt werden, wenn versucht wird, ein CLOB-Feld zu laden
Ich konnte nicht erfolgreich alle Daten von einem Oracle-CLOB-Feld aus einer XML-Datei in die geladen werden Datenbank.
- Oracle JDBC-Bibliothek ojdbc5.jar, ojdbc6.jar, Orakel 10 Gläser
Hibernate Bibliothek etc ... Ich denke, die:
Ich habe alle möglichen Kombinationen von Versionen der verwendeten Problem liegt in DBUnit. Siehe unten für Stack-Trace.
<groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>3.5.0-CR-2</version>
und
<groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>3.4.0.GA</version>
Ich bin mit Java 6, 1.6.0_15.
Ich habe versucht:
1) FlatXmlDataSet mit dieser Definition
<MESSAGE msg_id="1" mtp_id="1" msg_detail="asadds" />
2) XMLDataSet mit dieser Definition
<table name="MESSAGE">
<column>MSG_ID</column>
<column>MTP_ID</column>
<column>MSG_DETAIL</column>
<row>
<value>1</value>
<value>1</value>
<value>dsad</value>
</row>
</table>
Jede Hilfe wäre sehr willkommen!
Stapel Spur folgt:
at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:980) ERROR [10032010 14:15:13,031] - exception creating EntityManager: [] (MessageDAOTest.java:97) java.lang.RuntimeException: Exception in JpaDBTestCase at com.ert.commons.junit4.hibernate.JpaDBTestCase.loadDbunitFiles(JpaDBTestCase.java:97) at com.ert.ertmon.dao.ejb.impl.MessageDAOTest.setUpBeforeClass(MessageDAOTest.java:94) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31) at org.junit.runners.ParentRunner.run(ParentRunner.java:236) at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62) at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140) at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127) at org.apache.maven.surefire.Surefire.run(Surefire.java:177) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:334) at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:980) Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to oracle.sql.CLOB at oracle.jdbc.driver.OraclePreparedStatement.setObjectCritical(OraclePreparedStatement.java:7898) at oracle.jdbc.driver.OraclePreparedStatement.setObjectInternal(OraclePreparedStatement.java:7511) at oracle.jdbc.driver.OraclePreparedStatement.setObject(OraclePreparedStatement.java:7984) at oracle.jdbc.driver.OraclePreparedStatementWrapper.setObject(OraclePreparedStatementWrapper.java:237) at org.dbunit.dataset.datatype.ClobDataType.setSqlValue(ClobDataType.java:71) at org.dbunit.database.statement.SimplePreparedStatement.addValue(SimplePreparedStatement.java:73) at org.dbunit.database.statement.AutomaticPreparedBatchStatement.addValue(AutomaticPreparedBatchStatement.java:63) at org.dbunit.operation.AbstractBatchOperation.execute(AbstractBatchOperation.java:186) at org.dbunit.AbstractDatabaseTester.executeOperation(AbstractDatabaseTester.java:190) at org.dbunit.AbstractDatabaseTester.onSetup(AbstractDatabaseTester.java:103) at com.ert.commons.junit4.hibernate.JpaDBTestCase.loadDbunitFile(JpaDBTestCase.java:136) at com.ert.commons.junit4.hibernate.JpaDBTestCase.loadDbunitFiles(JpaDBTestCase.java:92) ... 21 more
Wow, danke für den Hinweis, es hat tatsächlich funktioniert. Ich habe diese Seite auf meinen Reisen gesehen, aber aufgrund ihres Alters und der verwiesenen DBunit-Version abgelehnt. Just FYI, ich musste die org.dbunit.ext.oracle.Oracle10DataTypeFactory zurück zu einer org.dbunit.ext.oracle.OracleDataTypeFactory (und andere Änderungen vornehmen), aber jetzt Clobs erfolgreich in 11G geladen.Ich kann immer noch nicht glauben, dass ich der Einzige bin, der darauf traf (CLOB loading in Oracle 11G) Ich werde die oben aufgeführte BUG ID aktualisieren, sobald meine SourceForge ID in der Mail erscheint. Nochmals, ein wirklich großer Dank! – Paul
aktualisiert, mal sehen was da rauskommt ... scheint bei DBUnit in diesen Tagen leider nicht viel los zu sein – Paul
@Paul Vielen Dank (für das Feedback und die Mühe). Und ja, das ist sehr bedauerlich (ich mag DbUnit sehr persönlich). –