如何只在spring引导应用程序中生成envers模式?

时间:2018-01-09 07:51:06

标签: hibernate hibernate-envers

我正在构建一个spring boot应用程序。在src/main/resources中,我有一个schema.sql文件,该文件将由spring自动执行以创建我的数据库模式。 最近我添加了Auditing with Hibernate envers。当然,我不想在schema.sql中手动添加_AUD表。

对于像h2这样的嵌入式数据库,我只能在application.properties hibernate.hbm2ddl.auto=create-drop中编写,以便自动生成表格。 切换到"真实"数据库该属性已失效。此外,这个属性只是方便,不建议生产。

所以正确的解决方案是让hibernate自动创建审计表。但是我怎么能这样做呢?我只想自动生成审计表的架构?

1 个答案:

答案 0 :(得分:1)

不幸的是,当谈到Hibernate 5的架构管理功能时, sources 之间并没有分离。它只是一个全有或全无的切换。

您可以考虑使用Hibernate Tooling Schema Generation Ant任务来生成模式创建脚本,然后手动修改它以满足您的需求。如果在第一次执行时无法找到将其注入引导程序设置的方法,您甚至可能需要手动执行它。

好消息是Hibernate 6将引入一种方式,让您完全按照自己的要求行事。您可以将Hibernate ORM的实体指定为validate,而审计表实体可以指定为update或任何其他设置。 Hibernate 6模式管理工具将能够区分这些不同的模式对象源,并以更独立的方式管理它们。

但是在Hibernate 6之前,您必须依赖工具任务来离线生成模式,并且可能会根据您的需要对这些脚本进行一些手动操作。