Hibernate Envers-通过实体的ID获取实体的所有实体、修订号、修订日期和修订类型
Hibernate Envers-Get all entities, revision numbers, revision dates and revision types of an Entity by its ID
使用 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;
}
是否可以一键获取?
我应该将这些字段直接添加到实体吗?
我建议你看看使用 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[]
数组,其中的值是:
- 实体实例。
- 修订实体实例(您可以在其中获取修订号和日期)
- 修订类型,例如添加,MOD,删除。
HTH.
使用 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;
}
是否可以一键获取?
我应该将这些字段直接添加到实体吗?
我建议你看看使用 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[]
数组,其中的值是:
- 实体实例。
- 修订实体实例(您可以在其中获取修订号和日期)
- 修订类型,例如添加,MOD,删除。
HTH.