Générer le script DDL à MAVEN build avec Hibernate4 / JPA 2.1
Il semble que la hibernate3-maven-plugin
utilisé pour générer DDL créer/supprimer des scripts n'est pas compatible plus avec Hibernate 4.3
et les versions plus récentes (à l'aide de JPA 2.1
).
J'utilise ce plugin de configuration :
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>hibernate3-maven-plugin</artifactId>
<version>3.0</version>
<executions>
<execution>
<id>generate-sql-schema</id>
<phase>process-sources</phase>
<goals>
<goal>hbm2ddl</goal>
</goals>
<configuration>
<hibernatetool>
<jpaconfiguration persistenceunit="${persistenceUnitName}" />
<hbm2ddl update="true" create="true" export="false"
outputfilename="src/main/sql/schema.sql" format="true"
console="true" />
</hibernatetool>
</configuration>
</execution>
</executions>
</plugin>
Mais j'obtiens l'erreur suivante :
[ERROR] Failed to execute goal org.codehaus.mojo:hibernate3-maven-plugin:3.0:hbm2ddl (generate-sql-schema) on project my-project: There was an error creating the AntRun task.
An Ant BuildException has occured: java.lang.NoClassDefFoundError: org/hibernate/util/ReflectHelper: org.hibernate.util.ReflectHelper -> [Help 1]
Cette classe comme migré vers un nouveau paquet : org.hibernate.internal.util.ReflectHelper
Cependant je n'ai pas trouvé de moyen pour continuer à produire des DDL de créer des scripts à MAVEN build.
Il n'y a pas de hibernate4-maven-plugin
, ou tout autre moyen de le faire.
Alors ? N'est-ce pas une caractéristique principale qui doit être pris en charge ? Comment faire ?
Que diriez - hibernate-maven-plugin 4.3.1 Finale ?
OriginalL'auteur Donatello | 2014-12-05
Vous devez vous connecter pour publier un commentaire.
Comme
Hibernate 4.3+
implémente maintenantJPA 2.1
le moyen le plus approprié pour générer des scripts DDL est à la suite de la série de JPA 2.1 propriétés :Un bon résumé de la d'autres propriétés et le contexte de la génération de schéma en JPA 2.1 peuvent être trouvés ici :
https://blogs.oracle.com/arungupta/entry/jpa_2_1_schema_generation
Et officiel JPA 2.1 spécifications ici :
https://jcp.org/aboutJava/communityprocess/final/jsr338/index.html
Que ce sera généré lors de l'exécution, vous pouvez exécuter cette DDL génération à construire.
Ici est la JPA 2.1 approche pour générer ce script par programme :
Comme vous pouvez le voir c'est très simple !
Maintenant, vous pouvez l'utiliser dans un AntTask, ou MAVEN build comme ça (MAVEN) :
Remarque que le fonctionnaire hibernate-maven-plugin aussi peuvent, ou non, faire le tour d'une certaine façon :
Profitez-en ! 🙂
merci @ruckc mais avez-vous essayé le mvnrepository.com/artifact/org.hibernate/hibernate-maven-plugin/... comme wypieprz dit ?
Salut. J'ai essayé votre solution avec gradle et pas de persistence.xml fichier et je suis en cours d'exécution dans des questions. J'ai ouvert un post: stackoverflow.com/questions/30225183. Quelqu'un peut-il aider s'il vous plaît?
Juste une question: si vous avez réussi à le faire fonctionner, comment voulez-vous exécuter le plugin maven? L'entitymanager doit être démarré pour la génération à se produire?
je pense qu'un entitymanager est automatiquement commencé à générer JPA schéma. Comme l'exemple indiqué, le plugin maven est exécuté sur le "processus-classes" phase de lancement (par exemple) un "mvn clean install" de commande.
OriginalL'auteur Donatello
Je suis peut-être un peu tard mais Andrew Thompson a une autre solution qui n'implique pas une persistence.xml ou une base de données réelle même si elle est spécifique d'Hibernate.
http://jandrewthompson.blogspot.com/2009/10/how-to-generate-ddl-scripts-from.html
Malheureusement, elle implique un peu de code, mais son très flexible.
OriginalL'auteur Justin Wrobel