我设置了 3 个配置文件(开发/测试/生产(像魔术一样工作(Java 和 Spring 启动的新手(
在我的开发配置文件中,数据库生成
hibernate.ddl-auto
工作在伟大的...还与
.hibernate.hbm2ddl.import_files
我用来用测试数据填充数据库的女巫
在测试环境中,我想运行一个脚本,它从转储中设置数据库..更像生产(由于某种原因,实体与数据库不匹配(
所以我尝试使用:
datasource.data
&&||
datasource.schema
在不同的组合中,与 文件: , 类路径前缀 .....
当我这样做时:
datasource.data=data.sql
它说:
'ServletContext resource [/data.sql]' is invalid: The specified resource does not exist
。移动了文件.../src/main/src/main/resources/src/main/resources/META-INF ..所有这些东西
我不明白"ServletContext"是什么意思......
我确实禁用了
hibernate.ddl-auto
通过在该配置文件中将其设置为无
也
hibernate.jpa.generate-ddl
为 false,即使在设置 DDL 自动时也不需要/使用它
。在我的追求"谷歌搜索"这个时,我遇到了 2014 年的帖子,自从从那时起事情出现以来,我感到非常困惑......
有,我指望那个;),一些属性必须设置为"运行此脚本",但我通过了文档......可能我错过了什么
有人可以指出我正确的方向吗?
谢谢!
感谢您的快速响应@Blagoj,该链接帮助了我..脚本通过设置DDL-auto来创建来执行..但它也从实体生成...如何阻止它这样做并执行脚本?
谢谢@luboskrnac您的建议! 会看看/使用它! .. 困扰我的是,我必须做错/从我的oppinion来看不太好...在开发中匹配产品.....希望在 dev 中做对了,一旦我可以证明它是正确的;)
。好吧,现在我最终手动设置了测试环境..但是一旦我知道更多,就会尝试自动化它......我看到总有一个工具可以解决注入问题;)
使用 Flyway 或 Liquibase 等数据库迁移工具创建初始架构和增量迁移数据库架构。现在重要的一点:在 DEV 和 PROD 环境中以同样的方式执行此操作!否则你就是在自找麻烦。
初始模式可以在Hibernate的帮助下生成。spring.jpa.hibernate.ddl-auto=create
将从您的 JPA 模型创建模式 +logging.level.org.hibernate.SQL=DEBUG
将碰撞 SQL 命令来创建此模式。此 SQL 转储可用作 Flyway 或 Liquibase 的初始迁移脚本。
您甚至可以将示例数据插入到 PROD 中(如果可以将它们隐藏在测试帐户后面(。然后,您可以针对 PROD 实例运行自动测试,这对于验证重要功能在 PROD 中是否正常工作非常方便。