Example usage for org.hibernate.persister.entity EntityPersister findDirty

List of usage examples for org.hibernate.persister.entity EntityPersister findDirty

Introduction

In this page you can find the example usage for org.hibernate.persister.entity EntityPersister findDirty.

Prototype

int[] findDirty(Object[] currentState, Object[] previousState, Object owner,
        SharedSessionContractImplementor session);

Source Link

Document

Compare the two snapshots to determine if they represent dirty state.

Usage

From source file:com.googlecode.hibernate.audit.synchronization.work.UpdateAuditWorkUnit.java

License:Open Source License

private void processProperties(Session session, AuditConfiguration auditConfiguration, AuditEvent auditEvent,
        EntityPersister persister, Object entity, AuditObject auditObject) {
    String[] propertyNames = persister.getPropertyNames();

    int[] changedPropertyIndexes = null;
    if (oldState == null) {
        // if the old state does not exist - for example directly updating an entity that is not associated with the session before that.
        changedPropertyIndexes = new int[propertyNames.length];
        for (int i = 0; i < propertyNames.length; i++) {
            changedPropertyIndexes[i] = i;
        }//from  ww  w. j  ava  2s. c o  m
    } else {
        changedPropertyIndexes = persister.findDirty(newState, oldState, entity, (SessionImplementor) session);
    }

    for (int i = 0; i < changedPropertyIndexes.length; i++) {
        String propertyName = propertyNames[changedPropertyIndexes[i]];

        if (auditConfiguration.getExtensionManager().getAuditableInformationProvider().isAuditable(entityName,
                propertyName)) {

            Type propertyType = persister.getPropertyType(propertyName);
            Object propertyValue = persister.getPropertyValue(entity, propertyName);

            processProperty(session, auditConfiguration, auditEvent, entity, propertyName, propertyValue,
                    propertyType, auditObject);
        }
    }
}