2013-02-12 21 views
5
ile değiştirilmiş özellikler alma

Varlıklarımı ve özelliklerini denetlemek için Hazırda Beklet'i kullanıyorum (org.hibernate.envers.global_with_modified_flag=true). Bu işe yarıyor gibi görünüyor, ama şimdi, bir önceki revizyona göre belirli bir revizyonda değiştirilen belirli bir varlığın tüm özelliklerini almak istiyorum. Bonus olarak, değişiklik setini bir revizyondan diğerine almak güzel olurdu. Ben Java bütün varlıklar için karşılaştırma yöntemlerini oluşturmak istemiyoruz çünkü bu revizyon değiştirilmiş özelliklerini almak için herhangi bir yolu yoktur, ŞimdiDüzeltme

List<Object> modifiedClassesAtRevision = getAuditReader().getCrossTypeRevisionChangesReader().findEntities(revision, RevisionType.MOD) 
Object modifiedObject = modifiedClassesAtRevision.get(0); 

: Şu ana kadar sadece modifiye varlıkları olsun?

List<String> modifiedProperties = getAuditReader().getModifiedProperties(modifiedObject, revision); 

çizgisinde bir şey olması güzel olurdu - ama belki de sadece çok aptal özelliğinin bu tür bulmak duyuyorum.

cevap

3

Şirket şu anda yalnızca bir mülkün değiştirildiği varlıklar için sorgulamak mümkündür, bkz. http://docs.jboss.org/hibernate/core/4.1/devguide/en-US/html/ch15.html#envers-envers-tracking-properties-changes-queries.

Hangi özelliklerin değiştirilmiş olduğu henüz bir tanımlayıcı (değişiklik kümesi) alınamıyor.

+1

Teşekkürler, sorgulama seçeneğini görebildim, yalnızca değiştirilen özelliklerin listelenmesinin belgelere dahil edilmediğinden veya gerçekten eksik olup olmadığından emin olmadı. Şimdi bunun ikincisi olduğunu biliyorum ;-) Bir geçici çözüm olarak eski sürümü ve yeni sürümü alıyorum ve tüm özellikler üzerinde yineleme yapmak ve değerlerini karşılaştırmak için "BeanUtils" ve "PropertyUtils" i kullanıyorum. Hoş değil, ama şimdilik çalışıyor. :-) –