我在生产中有一个基于Hibernate的应用程序,带有大型数据库。我需要在此应用程序中将审计添加到两个实体(两个表),并且我决定使用Envers。

对于每个INSERT,UPDATE或DELETE,Envers都会向实体的审计表中添加一条新记录。

如果我从应用程序一开始就获得Envers支持,则在实体创建(INSERT)时将填充审计表。

Envers文档非常薄,并且没有提及有关将Envers添加到现有应用程序的任何内容。

如果仅添加Envers支持并创建相应的审计表,它们将开始为空,因此当我更新现有实体时,Envers会将一条记录添加到审计表中以记录新值,但我会丢失以前的值。

我应该如何向具有现有数据库的应用程序添加Envers支持?

最佳答案

目前没有内置的解决方案。

“正确”的方法是编写一个SQL脚本(或手动创建)“0”修订版,并为每个现有实体插入绑定(bind)到该修订版的审计记录。

实际上,这是一个非常普遍要求的功能,因此,如果您愿意提供帮助,那将是非常受欢迎的!

关于hibernate - 将Envers添加到现有数据库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15534398/

10-09 05:39