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)

28
demandé sur Casey 2016-05-01 14:53:09

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.

57
répondu Casey 2016-10-03 09:34:04
spring:
  jpa:
    properties:
      javax:
        persistence:
          schema-generation:
            create-source: metadata
            scripts:
              action: create
              create-target: create.sql
-2
répondu Lestafarian 2018-04-03 12:37:43