我正嘗試使用hibernate3-maven-plugin和dbunit-maven-plugin maven插件創建並填充內存中的hsql數據庫模式。使用hibernate和dbunit maven插件在內存數據庫中創建問題
我設法做到一個文件,但沒有記憶。 hibernate插件可以毫無怨言地完成工作,但是一旦hibernate插件完成,dbunit就會抱怨db模式,它看起來就不存在了。正如我所說的,我完全可以在文件中使用hsql數據庫,但在內存中無法做到這一點。
這是Hibernate插件代碼:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>hibernate3-maven-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<id>hsqlDB</id>
<phase>test-compile</phase>
<goals>
<goal>hbm2ddl</goal>
</goals>
<configuration>
<components>
<component>
<name>hbm2ddl</name>
<implementation>annotationconfiguration</implementation>
</component>
</components>
<componentProperties>
<jdk5>true</jdk5>
<propertyfile>target/test-classes/hibernateconf.properties</propertyfile>
<configurationfile>target/test-classes/hibernate.cfg.xml</configurationfile>
<skip>${skipTests}</skip>
</componentProperties>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>2.0.0</version>
<scope>test</scope>
</dependency>
</dependencies>
</plugin>
hibernateconf.properties包含:
hibernate.dialect=org.hibernate.dialect.HSQLDialect
hibernate.connection.driver_class=org.hsqldb.jdbcDriver
hibernate.connection.url=jdbc:hsqldb:mem:mytestdb;hsqldb.write_delay=false;shutdown=true
hibernate.connection.username=sa
hibernate.connection.password=
hibernate.connection.pool_size=1
hibernate.hbm2ddl.auto=create-drop
這是DbUnit的
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>dbunit-maven-plugin</artifactId>
<version>1.0-beta-3</version>
<configuration>
<dataTypeFactoryName>org.dbunit.ext.hsqldb.HsqldbDataTypeFactory</dataTypeFactoryName>
<driver>org.hsqldb.jdbcDriver</driver>
<username>sa</username>
<password></password>
<url>jdbc:hsqldb:mem:mytestdb;shutdown=true;hsqldb.write_delay=false</url>
<src>src/test/resources/sample-data.xml</src>
<type>CLEAN_INSERT</type>
<skip>${skipTests}</skip>
<transaction>true</transaction>
<skipOracleRecycleBinTables>true</skipOracleRecycleBinTables>
</configuration>
<executions>
<execution>
<id>test-compile</id>
<phase>test-compile</phase>
<goals>
<goal>operation</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>2.0.0</version>
<scope>test</scope>
</dependency>
</dependencies>
</plugin>
這是錯誤消息:
Caused by: org.dbunit.dataset.NoSuchTableException: ExamplePersonEntity
at org.dbunit.database.DatabaseDataSet.getTableMetaData(DatabaseDataSet.java:281)
¿是否有任何想法?
非常感謝
非常感謝您的回答,但這並不適合我。原來我有這些分貝網址,但由於我沒有得到任何結果,我開始玩弄shutdown參數和hsqldb.write_delay之一。 謝謝在任何情況下:) – 2011-02-25 17:17:16
如果它肯定沒有與shutdown = false一起工作,那麼您對hibernate和dbunit使用不同的Java進程。在這種類型的設置中,您需要使用帶有內存數據庫的HSQLDB服務器。 – fredt 2011-02-25 18:51:51