diff --git a/src/main/java/com/bruce/common/config/EntityAuditMetaObjectHandler.java b/src/main/java/com/bruce/common/config/EntityAuditMetaObjectHandler.java index b8237ee..b2dafc6 100644 --- a/src/main/java/com/bruce/common/config/EntityAuditMetaObjectHandler.java +++ b/src/main/java/com/bruce/common/config/EntityAuditMetaObjectHandler.java @@ -14,15 +14,28 @@ public class EntityAuditMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { Date now = new Date(); - strictInsertFill(metaObject, "createTime", Date.class, now); - strictInsertFill(metaObject, "updateTime", Date.class, now); - strictInsertFill(metaObject, "createBy", String.class, SYSTEM_USER); - strictInsertFill(metaObject, "updateBy", String.class, SYSTEM_USER); + fillIfNull(metaObject, "createTime", now); + fillIfNull(metaObject, "updateTime", now); + fillIfNull(metaObject, "createBy", SYSTEM_USER); + fillIfNull(metaObject, "updateBy", SYSTEM_USER); } @Override public void updateFill(MetaObject metaObject) { - strictUpdateFill(metaObject, "updateTime", Date.class, new Date()); - strictUpdateFill(metaObject, "updateBy", String.class, SYSTEM_USER); + setIfWritable(metaObject, "updateTime", new Date()); + setIfWritable(metaObject, "updateBy", SYSTEM_USER); + } + + private void fillIfNull(MetaObject metaObject, String fieldName, Object fieldVal) { + if (!metaObject.hasSetter(fieldName) || metaObject.getValue(fieldName) != null) { + return; + } + metaObject.setValue(fieldName, fieldVal); + } + + private void setIfWritable(MetaObject metaObject, String fieldName, Object fieldVal) { + if (metaObject.hasSetter(fieldName)) { + metaObject.setValue(fieldName, fieldVal); + } } }