List of usage examples for org.hibernate.persister.entity EntityPersister findDirty
int[] findDirty(Object[] currentState, Object[] previousState, Object owner,
SharedSessionContractImplementor session);
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); } } }