Hibernate自动生成Schema时如何覆盖而非追加SQL Schema定义?
Spring Boot JPA 生成SQL文件覆盖原有内容的配置方案
JPA规范默认的Schema生成脚本写入策略为追加模式,因此每次项目启动生成的SQL都会拼接在原有文件末尾,你只需新增一行配置即可切换为覆盖模式:
修改后的完整配置如下:
spring: profiles: devlocal jpa: hibernate.ddl-auto: "create-drop" hibernate.hbm2ddl.charset_name: "UTF-8" properties: javax: persistence: schema-generation: scripts: action: "drop-and-create" create-target: "src/main/resources/data/definition/create.sql" drop-target: "src/main/resources/data/definition/drop.sql" create-source: "metadata" drop-source: "metadata" # 新增以下配置,关闭追加模式,每次生成直接覆盖原文件 append-target: false open-in-view: true
注意事项
- 若你使用Spring Boot 3及以上版本,由于Java EE已迁移为Jakarta EE,需要把配置前缀
javax.persistence替换为jakarta.persistence,其余配置逻辑不变 - 该配置属于JPA 2.1规范的标准参数,所有兼容JPA 2.1的持久化实现(包括Hibernate)均支持该配置
内容的提问来源于stack exchange,提问作者Boerger
相关产品推荐
相关产品推荐

