Example usage for org.hibernate.event.spi AbstractPreDatabaseOperationEvent getPersister

List of usage examples for org.hibernate.event.spi AbstractPreDatabaseOperationEvent getPersister

Introduction

In this page you can find the example usage for org.hibernate.event.spi AbstractPreDatabaseOperationEvent getPersister.

Prototype

public EntityPersister getPersister() 

Source Link

Document

The persister for the #getEntity entity .

Usage

From source file:org.grails.orm.hibernate.support.ClosureEventListener.java

License:Apache License

private void synchronizePersisterState(AbstractPreDatabaseOperationEvent event, Object[] state) {
    Object entity = event.getEntity();
    EntityPersister persister = event.getPersister();

    String[] propertyNames = persister.getPropertyNames();
    HashMap<Integer, Object> changedState = new HashMap<Integer, Object>();
    for (int i = 0; i < propertyNames.length; i++) {
        String p = propertyNames[i];
        MetaProperty metaProperty = domainMetaClass.getMetaProperty(p);
        if (ClosureEventTriggeringInterceptor.IGNORED.contains(p) || metaProperty == null) {
            continue;
        }/*from w  w  w . ja  v  a2s  . co m*/
        Object value = metaProperty.getProperty(entity);
        if (state[i] != value) {
            changedState.put(i, value);
        }
        state[i] = value;
        persister.setPropertyValue(entity, i, value);
    }

    synchronizeEntityUpdateActionState(event, entity, changedState);
}