Hi,
1. Is this using runtime or build-time enhancement?
2. May be related to this JIRA issue? [1]
http://issues.apache.org/jira/browse/OPENJPA-659 3. The code snippet below runs through fields of an instance to its dirty embedded instance's dirty fields. Works as expected on latest OpenJPA.
@PostUpdate
public void changed() {
EntityManager em = OpenJPAPersistence.getEntityManager(this);
PersistenceCapable pc = ImplHelper.toPersistenceCapable(this, em);
OpenJPAStateManager sm = (OpenJPAStateManager)pc.pcGetStateManager();
ClassMetaData meta = sm.getMetaData();
BitSet dirty = sm.getDirty();
for (int i=0; i<dirty.size(); i++) {
if (dirty.get(i)) {
if (meta.getField(i).isEmbedded()) {
Object embedded = sm.fetch(i);
PersistenceCapable epc = ImplHelper.toPersistenceCapable(embedded, em);
OpenJPAStateManager esm = (OpenJPAStateManager)epc.pcGetStateManager();
BitSet edirty = esm.getDirty();
for (int j=0; j<edirty.size(); j++) {
if (edirty.get(j))
System.err.println(esm.getMetaData().getField(j));
}
}
}
}
}
Pinaki