我已经开始使用 Hibernate Envers 来审计日志记录业务对象。我已经阅读了文档,并且从我看到的所有示例中,查询是通过修订号完成的。
我想按修订日期查询,即获取在特定日期或日期范围内发生的被审计实体的所有行。我这样的事情可能吗?
我的 revinfo 表包含一个时间戳,所以我知道数据在那里。
我已经开始使用 Hibernate Envers 来审计日志记录业务对象。我已经阅读了文档,并且从我看到的所有示例中,查询是通过修订号完成的。
我想按修订日期查询,即获取在特定日期或日期范围内发生的被审计实体的所有行。我这样的事情可能吗?
我的 revinfo 表包含一个时间戳,所以我知道数据在那里。
是的,这当然是可能的。您只需要获取与日期相对应的修订号。
这可以通过直接查询修订表或使用该AuditReader.getRevisionForDate
方法来实现。
使用审计阅读器并为您的日期添加查询参数。该属性称为时间戳。此示例使用包含开始日期和不包含结束日期。
List<Object[]> revisions = (List<Object[]>) getAuditReader().createQuery()
.forRevisionsOfEntity(YourEntityClass.class, false, true)
.add(AuditEntity.revisionProperty("timestamp").ge(startDate))
.add(AuditEntity.revisionProperty("timestamp").lt(endDate))
.getResultList();