Как в Spring Boot 2 я могу автоматически сгенерировать свою базу данных, а также записать команды генерации схемы в файл? - PullRequest
5 голосов
/ 09 июля 2020

Я использую Spring Boot 2.1 с Java 11. Я использую Maven для создания своих артефактов. При локальном запуске мне нравятся директивы Spring JPA, которые позволяют мне автоматически создавать базу данных ...

spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto=update
spring.jpa.hibernate.show-sql=true

Мне также нравятся директивы, которые позволяют мне автоматически создавать файлы ...

spring.jpa.properties.javax.persistence.schema-generation.create-source=metadata
spring.jpa.properties.javax.persistence.schema-generation.scripts.action=update
spring.jpa.properties.javax.persistence.schema-generation.scripts.create-target=update.sql

Однако, когда я объединяю оба в моем src / main / resources / application.properties ...

spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto=update
spring.jpa.hibernate.show-sql=true
spring.jpa.properties.javax.persistence.validation.mode=none

spring.datasource.url=jdbc:postgresql://${PG_DB_HOST:localhost}:5432/${PG_DB_NAME}

spring.datasource.username=${PG_DB_USER}
spring.datasource.password=${PG_DB_PASS}

spring.jpa.properties.javax.persistence.schema-generation.create-source=metadata
spring.jpa.properties.javax.persistence.schema-generation.scripts.action=update
spring.jpa.properties.javax.persistence.schema-generation.scripts.create-target=update.sql

, кажется, что «spring.jpa.properties.javax.persistence» имеет приоритет, а моя схема изменения не запускаются автоматически в базе данных. Есть ли способ настроить так, чтобы происходило и то, и другое - изменения записывались в файл и автоматически выполнялись в моей базе данных?

1 Ответ

1 голос
/ 12 июля 2020

Добавьте database.action с javax.persistence , как показано ниже, что обновит схему базы данных в соответствии с моделями, как описано в Создание схемы базы данных

application.properties

spring.jpa.properties.javax.persistence.schema-generation.database.action=update

Также рекомендуется изменить (устарело) PostgreSQLDialect диалект на PostgreSQL82Dialect или в соответствии с используемой версией . Dailects

application.properties

spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto=update
spring.jpa.hibernate.show-sql=true
spring.jpa.properties.javax.persistence.validation.mode=none

spring.datasource.url=jdbc:postgresql://${PG_DB_HOST:localhost}:5432/${PG_DB_NAME}

spring.datasource.username=${PG_DB_USER}
spring.datasource.password=${PG_DB_PASS}

spring.jpa.properties.javax.persistence.schema-generation.database.action=update
spring.jpa.properties.javax.persistence.schema-generation.create-source=metadata
spring.jpa.properties.javax.persistence.schema-generation.scripts.action=update
spring.jpa.properties.javax.persistence.schema-generation.scripts.create-target=update.sql
...