protected void notifyModelListenersOnUpdate(TT targetModel) throws SQLException { Map<String, Object> originalValues = new HashMap<String, Object>(); TT sourceModel = queryForId(extractId(targetModel)); for (String syncNotificationFieldName : getSyncNotificationFieldNames(dataClass.getSimpleName())) { if (syncNotificationFieldName.equals("")) { continue; } if (syncNotificationFieldName.equals("uiEvent")) { if (targetModel.getUiEvent() != BaseModel.UI_EVENT_DEFAULT) { originalValues.put("uiEvent", null); } } else { FieldType fieldType = tableInfo.getFieldTypeByColumnName(syncNotificationFieldName); Object sourceFieldValue = fieldType.extractJavaFieldValue(sourceModel); Object targetFieldValue = fieldType.extractJavaFieldValue(targetModel); DataPersister dataPersister = fieldType.getDataPersister(); if (!dataPersister.dataIsEqual(sourceFieldValue, targetFieldValue)) { originalValues.put(fieldType.getColumnName(), sourceFieldValue); } } } if (originalValues.isEmpty()) { return; } for (ModelListener<TT> modelListener : _modelListeners) { modelListener.onUpdate(targetModel, originalValues); } }