【问题标题】:Hibernate Envers-Get all entities, revision numbers, revision dates and revision types of an Entity by its IDHibernate Envers-通过实体ID获取实体的所有实体、修订号、修订日期和修订类型
【发布时间】:2017-11-28 20:34:20
【问题描述】:

使用 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;
}

是否可以一次查询获得?

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

【问题讨论】:

    标签: hibernate-envers


    【解决方案1】:

    我建议你看看使用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. 修订类型,例如添加、修改、删除。

    HTH。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-06
      • 1970-01-01
      • 2012-02-20
      • 2018-04-16
      • 2019-08-20
      • 2020-03-09
      • 2012-01-04
      • 2013-05-24
      相关资源
      最近更新 更多