2016-05-01 5 views
18

Derzeit bin ich mit dem Standard-@SpringBootApplication Anmerkung mit den folgenden Eigenschaften in application.properties:Wie generiert man ein ddl creation script mit einem modernen Spring Boot + Data JPA und Hibernate Setup?

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 

Da JPA 2.1, sollte ich in der Lage sein, die javax.persistence.schema-generation.* Eigenschaften zu verwenden, aber sie in meinem application.properties Einstellung scheint habe keine Wirkung.

Ich habe Beispiele like this gesehen, die eine ganze Reihe von zusätzlichen Beans verdrahten, aber sie verwenden Mysql nicht. Und auf jeden Fall muss ich viele Optionen konfigurieren, die der Frühling jetzt für mich erledigt.

Meine Ziele sind:

  • eine Schema-Erstellung SQL-Skript im Dialekt MYSQL generieren
  • ohne Datenbankverbindung
  • Ausgabe das Skript
  • Auch im Build-Verzeichnis zu erzeugen Hibernate erforderlich ist Envers Tabellen wäre ein großes Plus.

Ich will nicht zu:

  • erstellen/Drop-Schemas auf einer Live-Datenbank

Lib Versionen:

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 

(Mit gradle, nicht maven)

Antwort

40

Ah, gleich nachdem ich diese Frage gestellt habe auf einem Abschnitt der Federdaten docs fing mein Auge:

73.5 Configure JPA properties Zusätzlich werden alle Eigenschaften in spring.jpa.properties * durch als normale JPA Eigenschaften übergeben werden (mit dem Präfix gestrippt), wenn die lokale EntityManagerFactory. ist erstellt.

Also, meine eigene Frage zu beantworten: Präfix der javax.persistence Eigenschaften mit spring.jpa.properties:

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 

Nachdem Sie das getan wurde die Schemadatei automatisch im Projektstamm erzeugt.

+0

War es ausreichend, um hinzuzufügen, diese Objekte zu Ihrer Spring-Konfiguration zu erhalten, Holen Sie das Ergebnis, das Sie gesucht haben, oder mussten Sie auch Java-Code schreiben, um etwas wie Persistence.generateSchema (...) aufzurufen? Würde gerne mehr von Ihrer Lösung sehen, wenn Sie teilen können. – Firefly

+0

Amended die Antwort, im Wesentlichen nach dem Hinzufügen dieser Konfig, wurde die Datei automatisch in der generierten Quellen Verzeichnis erstellt. – Casey

+0

Ich habe gesehen, dass die Datei zur Laufzeit generiert wird. Gibt es eine Möglichkeit, es "offline" zu generieren? –

-1

Für eine feder Boot-Anwendung Sie folgende in der Datei application.properties, um festlegen müssen die create.sql Datei

spring.jpa.generate-ddl=true 
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 
+0

es funktioniert immer noch ohne spring.jpa.generate-ddl als akzeptierte Antwort zeigt –

Verwandte Themen