我想检索最近更改的所有实体(即数据库中的所有内容)的所有最新版本。
以下查询获取特定实体“MyEntity”的修订
queryObject = auditReader.createQuery().forRevisionsOfEntity(MyEntity.class, false, true).addOrder(AuditEntity.revisionNumber().desc())
但我需要一种机制来获取所有实体的记录,而不考虑特定的实体类型。
我想检索最近更改的所有实体(即数据库中的所有内容)的所有最新版本。
以下查询获取特定实体“MyEntity”的修订
queryObject = auditReader.createQuery().forRevisionsOfEntity(MyEntity.class, false, true).addOrder(AuditEntity.revisionNumber().desc())
但我需要一种机制来获取所有实体的记录,而不考虑特定的实体类型。
调查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
}
}