内容被追加到通过JPA脚本生成而生成的DDL文件中,而不是被替换

kg7wmglp  于 2023-03-23  发布在  其他
关注(0)|答案(1)|浏览(140)

自从更新到Sping Boot 2以来,我注意到在使用时生成DDL文件的方式发生了变化:jpa属性javax持久性模式生成脚本 * 选项。
以前,在Sping Boot 1.5中,每次我运行应用程序或测试时(我也有检查这些文件内容的集成测试),DDL文件都会重新生成,例如:

drop table testSchema.App if exists
drop table testSchema.AppMetadata if exists
drop table testSchema.Server if exists
drop table testSchema.User if exists
drop table testSchema.UserRole if exists
drop table testSchema.UserToken if exists

现在,升级到Sping Boot 2.0.5之后,每次运行测试或应用程序时,内容都会以这种方式追加到DDL文件中:

drop table testSchema.App if exists
drop table testSchema.AppMetadata if exists
drop table testSchema.Server if exists
drop table testSchema.User if exists
drop table testSchema.UserRole if exists
drop table testSchema.UserToken if exists
drop table testSchema.App if exists
drop table testSchema.AppMetadata if exists
drop table testSchema.Server if exists
drop table testSchema.User if exists
drop table testSchema.UserRole if exists
drop table testSchema.UserToken if exists
drop table testSchema.App if exists
drop table testSchema.AppMetadata if exists
drop table testSchema.Server if exists
drop table testSchema.User if exists
drop table testSchema.UserRole if exists
drop table testSchema.UserToken if exists

不知道这是框架的一个新行为还是我现在遇到的一个配置问题。这是我的test.properties文件(正如已经说过的,正常运行应用程序时也会发生同样的问题,但配置相对相似)。

# ========= DATA SOURCE : DB connection ========
spring.datasource.url=jdbc:h2:mem:myDb;INIT=CREATE SCHEMA IF NOT EXISTS testSchema
spring.datasource.username=________
spring.datasource.password=________
# ========= JPA / HIBERNATE =========
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.H2Dialect
spring.jpa.properties.hibernate.default_schema=testSchema
# DDL operations via Hibernate =========
spring.jpa.hibernate.ddl-auto = none
spring.jpa.generate-ddl = false
spring.jpa.show-sql=false
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
# DDL operations via JPA =========
spring.jpa.properties.javax.persistence.schema-generation.database.action=drop-and-create
spring.jpa.properties.javax.persistence.schema-generation.scripts.action=drop-and-create
spring.jpa.properties.javax.persistence.schema-generation.drop-source=metadata
spring.jpa.properties.javax.persistence.schema-generation.create-source=metadata
spring.jpa.properties.javax.persistence.schema-generation.scripts.drop-target=./src/test/resources/test_data/dbCreationTestFiles/jpaGenerated_drop_test_sys_db.ddl
spring.jpa.properties.javax.persistence.schema-generation.scripts.create-target=./src/test/resources/test_data/dbCreationTestFiles/jpaGenerated_create_test_sys_db.ddl

我的配置有问题吗?我如何设置以便每次运行时都重写DDL文件?
谢谢。

rsaldnfx

rsaldnfx1#

为了解决这个问题,您需要将此属性添加到配置中

spring.jpa.properties.hibernate.hbm2ddl.schema-generation.script.append=false

有关详细信息,请参见https://hibernate.atlassian.net/browse/HHH-11817

相关问题