現在、私はデフォルトの@SpringBootApplication
アノテーションを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
JPA 2.1以降、javax.persistence.schema-generation.*
プロパティを使用できるはずですが、application.propertiesで設定しても効果はないようです。
私は例を見ました このように 余分なBeanの束を結んでいますが、Mysqlを使用していません。いずれにせよ、そのように行うには、Springが現在対応している多くのオプションを設定する必要があります。
私の目標は:
したくないです:
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
(Mavenではなくgradleを使用)
ああ、この質問を投稿した直後に、春のデータドキュメントのセクションが目を引きました。
73.5 JPAプロパティの設定 さらに、ローカルEntityManagerFactoryの作成時に、spring.jpa.properties。*のすべてのプロパティが(プレフィックスが削除された)通常のJPAプロパティとして渡されます。
したがって、私自身の質問に答えるには、javax.persistenceプロパティの前に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
これを行った後、プロジェクトルートにスキーマファイルが自動的に生成されました。
これは、スプリングブートでルートフォルダーにddl作成スクリプトを生成するためのyml固有の構成です。
spring:
jpa:
properties:
javax:
persistence:
schema-generation:
create-source: metadata
scripts:
action: create
create-target: create.sql
jpa properties
を更新すると、スクリプトが生成されます。
<prop key="javax.persistence.schema-generation.scripts.action">drop-and-create</prop>
<prop key="javax.persistence.schema-generation.scripts.create-target">./create_mssql.sql</prop>
<prop key="javax.persistence.schema-generation.scripts.drop-target">./drop_mssql.sql</prop>
これにより、指定された場所にスクリプトが生成されます。さまざまなユースケースで使用できる他のプロパティもあります。 here を参照してください
構成全体は次のようになります
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.1" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="my-persistence-unit" transaction-type="JTA">
<description>Forge Persistence Unit</description>
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>Java:jboss/datasources/ExampleDS</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
<property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
<property name="javax.persistence.sql-load-script-source" value="META-INF/data.sql"/>
</properties>
</persistence-unit>
</persistence>