使用休眠查看任何日期的更改历史记录实体
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 空列表
出现问题 - 我必须在任何日期查看 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 空列表