Hi OpenJPA team, hi Pinaki! I've finally managed to check out the new auditing facility of OpenJPA 2.2 and have some feedback for you guys:
1) No test possible for tracking updates? I first tried to reuse my Junit tests for auditing and wondered why your new implementation did not work. The explanation seems to be that I don't get the "audit" event for updates if my Junit test rolls back the transaction. I saw that the TransactionEventManager does not fire the #beforeCommit in that case. Do you have an idea how I could re-write my tests? 2) Still problems with Maps I did not do a broad implementation of the auditor but instantly tried out the problem that I already got with maps (see my older posts). Unfortunately the problem is still there. This is my scenario: @Entity class A { @ElementCollection(fetch = FetchType.EAGER) private Map<String, StringAttribute> stringAttributes = new HashMap<String, StringAttribute>(); } @Embeddable class StringAttribute extends AbstractAttribute<String> { private String value; } class AuditTest { @Test public void test() { // create the object A a = new A(); a.getStringAttributes().put("key", new StringAttribute("value")); em.persist(a); em.clear(); // modify the object a = em.find(A.class, a.getId()); a.getStringAttributes().get("key").setValue("new value")); em.flush(); } } I try to explain what I do and what happens: When changing a value of a StringAttribute from "A#stringAttributes" my auditor gets a notification. Unfortunately the Maps of the original and the managed object contain the same values, i.e. the same instance of StringAttribute that already has the new value. That's why I can't track the old value of the StringAttribute. Do you have any idea if there is a problem with my implementation or with the auditor? Thanks a lot, Christopher -- NEU: FreePhone - 0ct/min Handyspartarif mit Geld-zurück-Garantie! Jetzt informieren: http://www.gmx.net/de/go/freephone