0

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

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

现在我想在我的当前数据库上删除这个审计表,并将它们更多地放在一个单独的实例上,并带有一个新的分支。

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

4

2 回答 2

1

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

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

于 2020-01-17T07:10:23.730 回答
1

请看一下配置选项

org.hibernate.envers.default_schema
应该用于审计表的默认模式名称

org.hibernate.envers.default_catalog
应该用于审计表的默认目录名称。

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

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

为了将REVINFO表正确映射到适当的模式或目录,需要将自定义修订实体映射与@Table注释结合使用,以便显式指定模式/目录。请参阅描述使用带有 Envers的自定义注释实体映射的修订日志部分。@RevisionEntity

于 2020-01-17T20:24:07.430 回答