我应该如何可视化 Envers 收集的数据?

How should I visualize the data collected by Envers?

我是 Hibernate (4.2) + Spring 组合的真正初学者,负责开发一个子应用程序,该应用程序使用这些来促进管理员门户中的一些 CRUD 管理,所以我可能是在非常基本的步骤中迷路。

我已将 Hibernate-Envers 加载到项目中以对特定的@Entity 字段进行审计日志记录。添加 @Audited 后,Envers 按预期工作,将数据添加到 _aud table.

我的目标是向管理员显示对该实体的所有修订的列表。我不确定我应该怎么做。

到目前为止我尝试过的是..

  1. 创建一个新的存储库 class 我想象中会使用 AuditReader 通过一些新的方式提供所有修订的列表 服务。但是,如果不添加新的,我就无法完成这项工作 历史对象本身的实体——我觉得这可能是 不是要走的路。
  2. 尝试在实体的现有控制器中使用 AuditReader。为了创建 AuditReader,我需要一个 sessionFactory,我试图将其自动装配到控制器中,但事实证明这不是正确的做法,因为自动装配失败了。

从 envers *_aud tables 收集数据以在网页上向最终用户显示它们的首选结构是什么?

Create a new Repository class that I imagined would use the AuditReader to supply a list of all revisions through some new Service. However, I couldn't make this work without adding a new Entity for the History object itself - and I felt this was probably not the way to go.

让我们假设我们有一些非常愚蠢的基本实体,如下所示:

@Entity
@Audited
public class BasicEntity {
  @Id
  @GeneratedValue
  private Integer id;
  private String name;
  ...
}

您应该能够构建两个 repository/dao 组件,它们都使用 BasicEntity 作为此处的实体类型,但两者在内部操作上与这些实例有很大不同。

您的业务存储库组件将注入 SessionEntityManager,您使用它来操纵这些调用 #persist#merge 等的实例

您的审计存储库组件也会注入 SessionEntityManager,但会使用它来构建 AuditReader 并查询审计表。

@Component
public interface BasicEntityAuditRepository implements AuditRepository<BasicEntity> {

  @PersistenceContext
  private EntityManager entityManager;

  @Override
  public List<BasicEntity> findByRevision(Long id, Number revision) {
    final AuditReader auditReader = AuditReaderFactory.get( entityManager );
    // build whatever query and return the results.
  }

}

public interface AuditRepository<T> {
  List<T> findByRevision(Long id, Number revision);
}