java - 当 spring.jpa.generate-ddl=false 时仍然生成 H2 模式
问题描述
我正在使用 Spring Boot 2.1.3 和内存数据库中的 H2 进行测试。当我运行测试时,即使我指定了以下属性,也会生成架构。
spring.jpa.generate-ddl=false
似乎是因为 Spring Boot 在使用 H2 时默认了以下属性
spring.jpa.hibernate.ddl-auto=create-drop
这优先于spring.jpa.generate-ddl=false
这是一个错误吗?
解决方案
此行为在第 11.3.3 章的Spring Boot 特性文档中进行了描述。创建和删除 JPA 数据库:
默认情况下,DDL 执行(或验证)会延迟到
ApplicationContext
启动。还有一个spring.jpa.generate-ddl
标志,但如果 Hibernate 自动配置处于活动状态,则不会使用它,因为ddl-auto
设置更细粒度。
由于spring.jpa.hibernate.ddl-auto
如果使用 Hibernate,则默认设置该属性,因此如果使用 Hibernate,spring.jpa.generate-ddl
则忽略该标志(至少对于 H2 内存数据库)
推荐阅读
- node.js - 错误:ENOENT:.staging 文件夹的所有文件中都没有这样的文件或目录
- python - 我如何制作一个循环,每行打印一个列表的 6 个元素?
- .net - 用于 cefsharp 71.0.2 的点网框架
- bash - 我可以在 2 个单独的终端窗口中查看进程的标准输出和标准错误吗?
- javascript - Symfony & Sonata:如何将 javascript 添加到实体管理表单?
- java - 发送带有参数的 POST 请求并读取响应
- java - lambda 不需要异常处理
- azure - 我的个人资料上有两个订阅即用即付和 Azure 订阅。有什么区别,我需要同时使用吗?
- javascript - 访问对象拥有数组内的键值
- jquery - 按 ID 选中多个复选框