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