2016-05-01 17 views
18

Obecnie używam domyślnego @SpringBootApplication adnotacji o następujących właściwościach w application.properties:Jak wygenerować skrypt tworzenia ddl za pomocą nowoczesnej konfiguracji Spring Boot + Data JPA i Hibernate?

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 

Od JPA 2.1, powinny być w stanie wykorzystać właściwości javax.persistence.schema-generation.*, ale ustawienie ich w moich application.properties wydaje nie działają.

Widziałem przykłady like this, które podłączają całą masę dodatkowych fasoli, ale nie używają Mysql. W każdym razie, zrobienie tego w ten sposób wymaga od mnie skonfigurowania wielu opcji, którymi wiosna się teraz zajmuje.

Moje cele to:

  • Generowanie skryptu SQL tworzenia schematu w dialekcie MYSQL
  • bez połączenia z bazą danych jest wymagane
  • Wyjście skryptu w katalogu build
  • generowania Również hibernacji envers tabele byłyby ogromnym plusem.

ja nie chce:

  • Tworzenie/drop schematów na żywo bazy

wersje Lib:

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 

(Korzystanie Gradle nie Maven)

Odpowiedz

40

Ah, zaraz po tym, jak opublikowałem ten questi na odcinku docs danych wiosennych wpadła mi w oko:

73.5 Configure JPA properties Oprócz wszystkich właściwości w spring.jpa.properties * są przekazywane poprzez jako normalne właściwości WZP (z prefiksem), gdy pozbawiony lokalny EntityManagerFactory. jest utworzone .

Tak więc, aby odpowiedzieć na moje własne pytanie: prefiks właściwości javax.persistence z 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 

Po wykonaniu tej czynności, plik schematu została wygenerowana automatycznie w katalogu głównym projektu.

+0

Czy to wystarczy dodać te właściwości do konfiguracji do wiosennego uzyskać wynik, który był po, czy też trzeba napisać kod Java, aby wywołać coś takiego jak Persistence.generateSchema (...)? Chciałbym zobaczyć więcej Twojego rozwiązania, jeśli możesz się nim dzielić. – Firefly

+0

Poprawiona odpowiedź, zasadniczo po dodaniu tej konfiguracji, plik został utworzony automatycznie w generowanych źródłach reż. – Casey

+0

Widziałem, że plik jest generowany w czasie wykonywania. Czy istnieje sposób na wygenerowanie go "offline"? –

-1

przypadku aplikacji wiosna-boot trzeba ustawić następujące w pliku application.properties, w celu uzyskania pliku create.sql

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

nadal działa bez spring.jpa.generate-ddl jak pokazuje akceptowana odpowiedź –

Powiązane problemy