削除されていないすべてのエンティティの最新リビジョンを取得しようとしています。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;
}
重要: 多くのリビジョンを含む多くの記事 (エンティティ) があるため、1 つまたは少なくとも 2 つのクエリでこれを実行したいと考えています。
どうもありがとう!