次のスニペットは、JPAエンティティクラスの変更があるたびに特定のデータベースのcreate/drop sqlを生成します。特定の実行を複数回繰り返す方法
どのように私は次のコードをどこ-での動作はサポートされているすべてのデータベースに対してSQLを生成するために使用することができます「の」は何に相当を行ってください(例えばH2、MySQLの、Postgresの)
現在、私は、DBを変更する必要があります.groupId、db.artifactId、SQLファイルに
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>hibernate3-maven-plugin</artifactId>
<version>${hibernate3-maven-plugin.version}</version>
<executions>
<execution>
<id>create schema</id>
<phase>process-test-resources</phase>
<goals>
<goal>hbm2ddl</goal>
</goals>
<configuration>
<componentProperties>
<persistenceunit>${app.module}</persistenceunit>
<drop>false</drop>
<create>true</create>
<outputfilename>${app.sql}-create.sql</outputfilename>
</componentProperties>
</configuration>
</execution>
<execution>
<id>drop schema</id>
<phase>process-test-resources</phase>
<goals>
<goal>hbm2ddl</goal>
</goals>
<configuration>
<componentProperties>
<persistenceunit>${app.module}</persistenceunit>
<drop>true</drop>
<create>false</create>
<outputfilename>${app.sql}-drop.sql</outputfilename>
</componentProperties>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate-core.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j-api.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-nop</artifactId>
<version>${slf4j-nop.version}</version>
</dependency>
<dependency>
<groupId>${db.groupId}</groupId>
<artifactId>${db.artifactId}</artifactId>
<version>${db.driver.version}</version>
</dependency>
</dependencies>
<configuration>
<components>
<component>
<name>hbm2cfgxml</name>
<implementation>annotationconfiguration</implementation>
</component>
<component>
<name>hbm2dao</name>
<implementation>annotationconfiguration</implementation>
</component>
<component>
<name>hbm2ddl</name>
<implementation>jpaconfiguration</implementation>
<outputDirectory>src/main/sql</outputDirectory>
</component>
<component>
<name>hbm2doc</name>
<implementation>annotationconfiguration</implementation>
</component>
<component>
<name>hbm2hbmxml</name>
<implementation>annotationconfiguration</implementation>
</component>
<component>
<name>hbm2java</name>
<implementation>annotationconfiguration</implementation>
</component>
<component>
<name>hbm2template</name>
<implementation>annotationconfiguration</implementation>
</component>
</components>
</configuration>
</plugin>
リッチ(あなたがそれを行う場合、あなたはおそらくexecのモジョの代わりに、Javaのモジョを使用したいと思う)アリ埋め込んだり、外部プロセスとしてantを実行することができます一度にアクティブにすると、私はそれらの間で切り替えるためにプロファイルを使用します。 hbm2ddl.autoを使用してSQLを動的に生成するのではなく、hbm2ddlプラグインを使用して、サポートされているすべてのデータベースのスクリプトを生成し、起動前にあらかじめロードしています。したがって、サポートされているすべてのデータベースのすべての作成/削除SQLを単一実行で生成する機能が必要になります。それが明確になることを願っています。 – Joe
これは問題を抱えていますが、これをテストする構成はありません。プラグインコードを調べると、これを行う組み込みのメカニズムがないことを示します –