private static Object getChange(EntityPersister persister, Session session, String entityName, Serializable id, Object entity) {
Number version = (Number)persister.getVersion(entity);
String uid = getUid(persister, entity);
if (uid == null)
return null;
Object change = null;
for (EntityUpdate du : DataContext.get().getDataUpdates()) {
if (du.entity instanceof Change) {
if (du.type == EntityUpdateType.UPDATE
&& ((Change)du.entity).getClassName().equals(entityName)
&& ((Change)du.entity).getId().equals(id)) {
change = du.entity;
break;
}
}
else if (du.entity.getClass().getName().equals(entityName)
&& id.equals(persister.getIdentifier(entity, (SessionImplementor)session))) {
change = du.entity;
break;
}
}
if (change == null) {
change = new Change(entityName, id, version, uid);
DataContext.addUpdate(EntityUpdateType.UPDATE, change, entity, 1);
}
else if (change instanceof Change)
((Change)change).updateVersion(version);
return change;
}