使用休眠查看任何日期的更改历史记录实体

View change history entity for any date with hibernate

出现问题 - 我必须在任何日期查看 table 实体的状态。

请告诉我如何通过 envers 实现此任务,或者其他解决方案比 envers 更好更容易

我在我的项目中使用 spring-boot,spring-data 和 hibernate。 为此,我尝试使用 Hibernate-envers。 我的代码看起来像这样,但并没有解决问题:

List list = auditReader.createQuery()
            .forRevisionsOfEntity(Entity.class, false, true)
            .addOrder(AuditEntity.revisionNumber().desc())
            .addProjection(AuditEntity.property("id").distinct())
            .add(AuditEntity.revisionNumber().le(auditReader.getRevisionNumberForDate(new Date())))
            .getResultList();

我在 question 中找到了解决方案。

list = auditReader.createQuery()
                .forRevisionsOfEntity(Entity.class, true, true)
                .add(AuditEntity.revisionNumber().le(auditReader.getRevisionNumberForDate(date)))
                .add(AuditEntity.revisionNumber().maximize().computeAggregationInInstanceContext())
                .add(AuditEntity.revisionType().ne(RevisionType.DEL))
                .getResultList();

此查询return是一个现成的实体列表。函数 'computeAggregationInInstanceContext()' 根据文档工作,需要 GROUP BY 语句:

Compute aggregated expression in the context of each entity instance separately.

不要忘记捕获 'RevisionDoesNotExistException',以防你 return 空列表