Comment générer un script de création ddl avec une installation moderne JPA et Hibernate?
actuellement, j'utilise la valeur par défaut @SpringBootApplication
annotation avec les propriétés suivantes dans application.properties
:
spring.datasource.url=jdbc:mysql://localhost/dbname
spring.datasource.username=X
spring.datasource.password=X
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.hibernate.naming_strategy=my.package.CustomNamingStrategy
depuis JPA 2.1, je devrais pouvoir utiliser le javax.persistence.schema-generation.*
propriétés, mais les définir dans mon application.les propriétés ne semblent pas avoir d'effet.
j'ai vu des exemples comme ceci ce fil jusqu'à un tas de haricots supplémentaires, mais ils n'utilisent pas Mysql. Et dans tous les cas, le faire comme ça me demande de configurer beaucoup d'options que le printemps est prendre soin de moi maintenant.
Mes objectifs sont de:
- Générer un schéma de création de script sql dans MYSQL dialecte
- sans une connexion de base de données étant nécessaires
- sortie du script dans le répertoire de compilation
- également générer des tables d'envers hibernées serait un énorme plus.
je ne veux pas:
- Créer/supprimer des schémas sur un live de la base de données
Lib versions:
hibernate : 4.3.11.FINAL
spring framework : 4.2.5.RELEASE
spring-boot : 1.3.3.RELEASE
spring-data-jpa : 1.10.1.RELEASE // for querydsl 4 support
spring-data-commons: 1.12.1.RELEASE // for querydsl 4 support
(à l'Aide de gradle, pas maven)
2 réponses
Ah, juste après que j'ai posté cette question une section des données de printemps docs a attiré mon attention:
73.5 configurer les propriétés JPA en plus toutes les propriétés printemps.jpa.propriété.* sont transmis comme propriétés normales de L'app (avec le préfixe dépouillé) lorsque L'EntityManagerFactory locale est créé.
donc, pour répondre à ma propre question: préfixe le javax.propriétés de persistance avec printemps.jpa.propriétés:
spring.jpa.properties.javax.persistence.schema-generation.create-source=metadata
spring.jpa.properties.javax.persistence.schema-generation.scripts.action=create
spring.jpa.properties.javax.persistence.schema-generation.scripts.create-target=create.sql
après cela, le fichier schema a été généré automatiquement dans la racine du projet.
spring:
jpa:
properties:
javax:
persistence:
schema-generation:
create-source: metadata
scripts:
action: create
create-target: create.sql