使用 java 将审计 table 移动到新的数据库实例

Moving auditing table with java envers to new database instance

我有一个 Mysql 数据库,架构名称 "myschema"。这个模式有表,其中一些表是 审计表。这是我对 java 项目的依赖。

<dependency>
   <groupId>org.hibernate</groupId>
   <artifactId>hibernate-envers</artifactId>
   <version>5.1.0.Final</version>
</dependency>

现在我想在我当前的数据库上重新创建这个审计表,并在一个单独的实例上添加它们,并使用一个新的分支 uri。

如何做到这一点?任何建议,提前谢谢你

AFAIK Envers 不支持使用单独的数据库/DataSource。似乎有几种方法可以将数据获取到另一个数据库:Oracle Database Link - MySQL Equivalent?

或者,我想您可以编写自定义 DataSource,根据语句将语句委托给不同的数据源。 检查是否提到了审计 table,如果是,将其发送到审计数据库。

请看一下Configuration Options:

org.hibernate.envers.default_schema
应该用于审核的默认架构名称 tables

org.hibernate.envers.default_catalog
应该用于审核的默认目录名称 tables.

您应该使用的选项取决于您的数据库。

还有一个错误,如果您使用 Envers 开箱即用的默认修订实体映射,那么在使用这些配置选项时,这些映射将无法正确映射,只有 tables与实体映射有关。

为了将 REVINFO table 正确映射到适当的架构或目录,需要将自定义修订实体映射与 @Table 注释结合使用命令明确指定schema/catalog。请参阅描述使用自定义 @RevisionEntity 注释实体映射与 Envers 的 Revision Log 部分。