fix: 修正工具类问题
diff --git a/common/framework/src/main/java/com/supwisdom/institute/backend/common/framework/entity/EntityUtils.java b/common/framework/src/main/java/com/supwisdom/institute/backend/common/framework/entity/EntityUtils.java
index 662b24a..902c592 100644
--- a/common/framework/src/main/java/com/supwisdom/institute/backend/common/framework/entity/EntityUtils.java
+++ b/common/framework/src/main/java/com/supwisdom/institute/backend/common/framework/entity/EntityUtils.java
@@ -1,6 +1,7 @@
package com.supwisdom.institute.backend.common.framework.entity;
import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
import java.util.Date;
import javax.persistence.Column;
@@ -30,7 +31,7 @@
* ,待覆盖的实体
* @return 合并后的newEntity
*/
- public static <T> T merge(T oldEntity, T newEntity) {
+ public static <T extends ABaseEntity> T merge(T oldEntity, T newEntity) {
for (Class<?> clazz = oldEntity.getClass(); clazz != Object.class; clazz = clazz.getSuperclass()) {
for (Field field : clazz.getDeclaredFields()) {
@@ -59,19 +60,32 @@
for (Class<?> clazz = targetEntity.getClass(); clazz != Object.class; clazz = clazz.getSuperclass()) {
for (Field field : clazz.getDeclaredFields()) {
- Column[] annotations = field.getAnnotationsByType(Column.class);
- if (annotations == null || annotations.length == 0) {
- Id[] idAnnotations = field.getAnnotationsByType(Id.class);
- if (idAnnotations == null || idAnnotations.length == 0) {
- continue;
- }
+
+// Column[] annotations = field.getAnnotationsByType(Column.class);
+// if (annotations == null || annotations.length == 0) {
+// Id[] idAnnotations = field.getAnnotationsByType(Id.class);
+// if (idAnnotations == null || idAnnotations.length == 0) {
+// continue;
+// }
+// }
+
+ if (Modifier.isStatic(field.getModifiers())) {
+ continue;
}
String fieldName = field.getName();
+
+ if(fieldName.equals("serialVersionUID")){
+ continue;
+ }
+ if (!ReflectUtils.existField(sourceEntity, fieldName)) {
+ continue;
+ }
+
Object sFieldValue = ReflectUtils.getFieldValue(sourceEntity, fieldName);
if (sFieldValue != null) {
- ReflectUtils.setFieldValue(targetEntity, fieldName, sFieldValue,field.getType());
+ ReflectUtils.setFieldValue(targetEntity, fieldName, sFieldValue, field.getType());
}
}
}
@@ -79,15 +93,25 @@
return targetEntity;
}
- public static <S, T> T fatherToChild (S father, T child){
+ public static <F, C> C fatherToChild (F father, C child){
for (Class<?> clazz = child.getClass(); clazz != Object.class; clazz = clazz.getSuperclass()) {
for (Field field : clazz.getDeclaredFields()) {
+ if (Modifier.isStatic(field.getModifiers())) {
+ continue;
+ }
+
String fieldName = field.getName();
- if(fieldName.equals("serialVersionUID")){continue;}
+ if(fieldName.equals("serialVersionUID")){
+ continue;
+ }
+ if (!ReflectUtils.existField(father, fieldName)) {
+ continue;
+ }
+
Object sFieldValue = ReflectUtils.getFieldValue(father, fieldName);
if (sFieldValue != null) {
- ReflectUtils.setFieldValue(child, fieldName, sFieldValue,field.getType());
+ ReflectUtils.setFieldValue(child, fieldName, sFieldValue, field.getType());
}
}
}
diff --git a/common/utils/src/main/java/com/supwisdom/institute/backend/common/util/ReflectUtils.java b/common/utils/src/main/java/com/supwisdom/institute/backend/common/util/ReflectUtils.java
index 1b9313e..cddd545 100644
--- a/common/utils/src/main/java/com/supwisdom/institute/backend/common/util/ReflectUtils.java
+++ b/common/utils/src/main/java/com/supwisdom/institute/backend/common/util/ReflectUtils.java
@@ -33,7 +33,7 @@
* 目标属性
* @return 目标字段
*/
- private static Field getField(Object obj, String fieldName) {
+ public static Field getField(Object obj, String fieldName) {
Field field = null;
for (Class<?> clazz = obj.getClass(); clazz != Object.class; clazz = clazz.getSuperclass()) {
try {
@@ -45,6 +45,11 @@
}
return field;
}
+
+ public static boolean existField(Object obj, String fieldName) {
+ Field field = getField(obj, fieldName);
+ return field != null;
+ }
/**
* 调用Getter方法.