我正在尝试检索尚未删除的所有实体的最新版本。使用子选择在 SQL 中执行此操作非常简单:
select * from article_aud aud1
where rev in
(select max(rev) from article_aud aud2
where aud1.id = aud2.id)
and revtype < 2
但我不知道如何通过 envers API 实现这一点。我从 AuditReader 开始,但没有找到选择不同对象的方法
public List<Object[]> findLatestArticleRevisions(){
List<Object[]> results = (List<Object[]>) getJpaTemplate().execute(new AuditReaderCallback() {
@Override
public Object doInAuditReader(AuditReader auditReader) {
return auditReader.createQuery().forRevisionsOfEntity(Article.class, false, false)
// TODO select distinct on entities
.addOrder(new PropertyAuditOrder(new RevisionNumberPropertyName(), false))
.getResultList();
}
});
return results;
}
重要:我想在一个或至少两个查询中执行此操作,因为我有很多文章(实体)有很多修订。
非常感谢!