73 votes

Comment générer un script de création ddl avec une configuration Spring Boot + Data JPA et Hibernate moderne?

Actuellement, je suis en utilisant la valeur par défaut @SpringBootApplication d'annotation avec les propriétés suivantes en 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 être en mesure d'utiliser l' javax.persistence.schema-generation.* propriétés, mais de les placer dans mon application.les propriétés ne semble avoir aucun effet.

J'ai vu des exemples comme cela que le fil jusqu'tout un tas de haricots extra, mais ils ne sont pas de l'utilisation de Mysql. Et dans tous les cas, le faire comme ça me demande de configurer de nombreuses options que le printemps est de 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 le script dans le répertoire de construction
  • Aussi générateurs d'hibernate envers les tableaux 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)

132voto

Casey Points 2020

Ah, juste après que j'ai posté cette question une partie du ressort des données docs a attiré mon attention:

73.5 Configurer JPA propriétés En outre, toutes les propriétés de la printemps.jpa.les propriétés.* sont traversés normal JPA propriétés (avec le préfixe dépouillé) lorsque le local est EntityManagerFactory créée.

Donc, pour répondre à ma propre question: préfixe de la javax.la persistance des propriétés avec le 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 schéma de fichier a été généré automatiquement à la racine du projet.

19voto

Lestafarian Points 11
spring:
  jpa:
    properties:
      javax:
        persistence:
          schema-generation:
            create-source: metadata
            scripts:
              action: create
              create-target: create.sql

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X