Перехватчики - Как найти владельца предыдущего снимка в onCollectionUpdate? - PullRequest
0 голосов
/ 04 января 2019

Итак, я переопределил метод 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)?

Спасибо

...