Итак, я переопределил метод onCollectionUpdate из Hibernate Interceptor, чтобы проверить изменение коллекции в сущности.
Вот мой код:
@Override
public void onCollectionUpdate(Object collection, Serializable key) throws CallbackException {
if (collection != null) {
PersistentCollection persistentColl = ((PersistentCollection) collection);
Object owner = persistentColl.getOwner();
Class<?> obj = owner.getClass();
if (obj.isAnnotationPresent( AuditTrail.class )) {
Map previousStoredSnapshotMap = (Map) persistentColl.getStoredSnapshot();
Object previousCollOrMap;
if (Collection.class.isAssignableFrom( collection.getClass() )) {
previousCollOrMap = previousStoredSnapshotMap.values();
} else {
previousCollOrMap = previousStoredSnapshotMap;
}
String propertyName = persistentColl.getRole().substring( persistentColl.getRole().lastIndexOf( '.' ) + 1 );
try {
AuditTrail auditTrail = obj.getAnnotation( AuditTrail.class );
if (auditTrail.trail()) {
//logging method to be added here
}
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
}
}
Я нашел«владелец» - текущее состояние родительского объекта.Но как я могу получить предыдущего владельца (владельца previousStoredSnapshot)?
Спасибо