ile her varlığın en son revizyonunu listelemiyorum Silinmemiş olan tüm tüm varlıkları almaya çalışıyorum.Envanter
select * from article_aud aud1
where rev in
(select max(rev) from article_aud aud2
where aud1.id = aud2.id)
and revtype < 2
Ama envers API üzerinden bu nasıl uygulanacağı bir ipucu, yok: SQL bu yapmamak bir subselect ile çok basittir. Birçok ile birçok makale (varlıkları) var çünkü bir veya en az iki sorgularda bunu yapmak istiyor: Ben AuditReader ile başladı ama farklı nesneler
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;
}
Önemli seçmek için bir yol bulamadık revizyonları.
Çok teşekkürler!
Bir varlığın en son revizyon numarasını almanın bir yolu var mı? Bir varlık eklendiğini, iki kez güncellendiğini ve şimdi 3 düzeltme numarasına sahip olduğunu varsayalım. Son revizyon numarasını nasıl alabilirim? – AppSensei
Hmm Bu, sorguda döndürülen birden çok düzeltim olduğunda işe yarar görünüyor, toplama işlevi bana en son (en yüksek) revizyonu veriyor. Ancak sadece bir revizyon varsa, hiç bir revizyona geri dönmez. Bu sorunu yaşadın mı? – chrismacp
Aslında, nasıl çalıştığını yanlış anlamıyorum. Bir varlığın en son revizyonunu filtrelerseniz, bu varlık iade edilmez. Düzeltmeleri filtreledikten sonra varlığın en son sürümünü istedim. Yani Çarşamba gününden önce tüm revizyonları bana verin ve o alt kümedeki varlığın en son sürümünü bana verin. Bu şekilde çalışmıyor gibi görünüyor. – chrismacp