Hibernate Envers - 按ID获取实体的所有实体,修订号,修订日期和修订类型

时间:2017-06-26 02:12:34

标签: hibernate-envers

使用Hibernate Envers我希望获得所有实体修订版数修订日期修订版类型实体的 ID

目前我这样做是为了获取实体,修订号和修订日期:

public List<Alumno> obtenerAuditoriaAlumno(Long idAlumno) {

   AuditReader auditReader = AuditReaderFactory.get(entityManager);
   List<Number> revisionNumbers = auditReader.getRevisions(Alumno.class, idAlumno);

   List<Alumno> auditoriaAlumno = new ArrayList<Alumno>();

   for (Number rev : revisionNumbers) {
      Alumno alumno = auditReader.find(Alumno.class, idAlumno, rev);
      Date revisionDate = auditReader.getRevisionDate(rev);

      alumno.setRevisionNumber(rev.intValue());
      //alumno.setRevisionType(revisionType); // GET THIS
      alumno.setRevisionDate(revisionDate);
      auditoriaAlumno.add(alumno);
  }
return auditoriaAlumno;
}

是否可以通过一个查询获取它?

我应该将这些字段直接添加到实体吗?

1 个答案:

答案 0 :(得分:6)

我建议你看一下使用forRevisionsOfEntity。您可以使用AuditReader接口访问此方法,如下所示:

auditReader.createQuery().forRevisionsOfEntity( 
   YourAuditEntityClass.class,
   false,                       // false returns an array of entity and audit data
   true                         // selects the deleted audit rows
);

这里重要的方法参数是第二个参数,因为它会影响返回的Object类型。当其true时,您将返回每个修订版的实际审计实体实例;但是,当它false返回时,Object[]数组的值为:

  1. 实体实例。
  2. 修订实体实例(您可以在其中获取修订号和日期)
  3. 修订类型,例如ADD,MOD,DEL。
  4. HTH。