L'extrait suivant génère un code SQL créer/supprimer pour une base de données particulière, chaque fois qu'une modification est apportée aux classes d'entités JPA.Comment répéter une exécution particulière plusieurs fois
Comment puis-je effectuer quelque chose d'équivalent d'un « pour » opération où dans le code suivant peut être utilisé pour générer des requêtes SQL pour toutes les bases de données prises en charge (par exemple H2, MySQL, Postgres)
Actuellement je modifier db .groupId, db.artifactId, à chaque fois de db.driver.version pour générer les fichiers 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>
Rich - J'ai une base de données actif à la fois et j'utilise les profils pour basculer entre eux. Je n'utilise pas la capacité hbm2ddl.auto pour générer mon SQL dynamiquement, mais j'utilise le plugin hbm2ddl pour générer des scripts pour toutes les bases de données supportées et les pré-charger avant le démarrage. Par conséquent, j'aurais besoin de la possibilité de générer tout le SQL de création/suppression pour toutes les bases de données prises en charge en une seule fois. J'espère que cela clarifie. – Joe
Ok, je vois le problème, je n'ai pas de configuration pour tester ça. Inspecter le code du plugin indique qu'il n'y a pas de mécanisme intégré pour le faire –