我正在构建一个spring boot应用程序。在src/main/resources
中,我有一个schema.sql
文件,该文件将由spring自动执行以创建我的数据库模式。
最近我添加了Auditing with Hibernate envers。当然,我不想在schema.sql中手动添加_AUD
表。
对于像h2这样的嵌入式数据库,我只能在application.properties
hibernate.hbm2ddl.auto=create-drop
中编写,以便自动生成表格。
切换到"真实"数据库该属性已失效。此外,这个属性只是方便,不建议生产。
所以正确的解决方案是让hibernate自动创建审计表。但是我怎么能这样做呢?我只想自动生成审计表的架构?
答案 0 :(得分:1)
不幸的是,当谈到Hibernate 5的架构管理功能时, sources 之间并没有分离。它只是一个全有或全无的切换。
您可以考虑使用Hibernate Tooling Schema Generation Ant任务来生成模式创建脚本,然后手动修改它以满足您的需求。如果在第一次执行时无法找到将其注入引导程序设置的方法,您甚至可能需要手动执行它。
好消息是Hibernate 6将引入一种方式,让您完全按照自己的要求行事。您可以将Hibernate ORM的实体指定为validate
,而审计表实体可以指定为update
或任何其他设置。 Hibernate 6模式管理工具将能够区分这些不同的模式对象源,并以更独立的方式管理它们。
但是在Hibernate 6之前,您必须依赖工具任务来离线生成模式,并且可能会根据您的需要对这些脚本进行一些手动操作。