1

我有一个具有以下结构的休眠实体:

@Entity
public class A
{
  private Integer id;
  private String name;
  @OneToMany
  private List<B> bList;
}

@Entity
public class B
{
  private Integer id;
  @OneToMany
  private List<C> cList;
}

现在我想维护实体“A”的历史记录,信息如下:

historyDate | fieldsChanged | updatedBy | createdBy

fieldsChanged列中,我想要实体 A 的列的名称以及实体B 或 C中是否应用了任何更改。

现在我用谷歌搜索并找到以下几种方法来实现这些:

  1. 数据库上的写入器触发器
  2. 自己的Java逻辑来维护历史表
  3. 使用休眠环境

现在我不确定从上面或其他任何东西应该是更好的方法。

任何建议将不胜感激......

4

1 回答 1

1

Envers 使用不同的审计方案 - 为每次更改存储实体的全部内容。答案真的取决于你需要什么。

  1. 如果直接从各种系统访问数据库,使用各种语言编写,那么它是正确的选择。
  2. 如果您需要具有您所写的结构,则最好
  3. 为您提供审核,但格式不同。
于 2012-10-26T07:13:31.217 回答