0

我想检索最近更改的所有实体(即数据库中的所有内容)的所有最新版本。
以下查询获取特定实体“MyEntity”的修订

queryObject = auditReader.createQuery().forRevisionsOfEntity(MyEntity.class, false, true).addOrder(AuditEntity.revisionNumber().desc())

但我需要一种机制来获取所有实体的记录,而不考虑特定的实体类型。

4

1 回答 1

0

调查org.hibernate.envers.track_entities_changed_in_revision

此设置导致针对修订实体创建连接表,其中将为每个修订号跟踪基于字符串的实体名称集。有了这些信息,您应该能够使用AuditReader#createQuery()API 构建必要的查询来迭代所有更改。

在伪代码中,它会是这样的:

List<Number> revisions = // create AuditQuery to get all revision numbers
for ( Number revision : revisions ) {
  DefaultTrackingModifiedEntitiesRevisionEntity revisionEntity = // create query to get revision entity
  for ( String entityName : revisionEntity.getModifiedEntityNames() ) {
    // create query based on entityName + revisionNumber
  }
}
于 2019-11-13T19:54:37.947 回答