mirror of https://gitee.com/stylefeng/roses
【8.3.0】【scanner】更新字段扫描获取父级类的信息
parent
eaacc3be48
commit
617e16fa83
|
@ -75,28 +75,8 @@ public class ClassDetailMetadataFactory {
|
|||
case OBJECT:
|
||||
// 如果是实体对象,则描述实体对象的所有字段信息
|
||||
Class<?> objectClass = (Class<?>) fieldType;
|
||||
Field[] fields = objectClass.getDeclaredFields();
|
||||
fieldMetadata = new LinkedHashSet<>();
|
||||
|
||||
// 在处理Object中所有字段之前,将当前父类放进context,所有子字段不能含有父类的类型,否则会递归
|
||||
MetadataContext.addClassRecord(uuid, objectClass.getName());
|
||||
|
||||
for (Field field : fields) {
|
||||
FieldMetadata fieldInfo;
|
||||
|
||||
// 判断字段是否是基础字段例如serialVersionUID,或者delFlag等字段
|
||||
if (ScannerConstants.DONT_PARSE_FIELD.contains(field.getName())) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// 判断该实体是否被解析过,防止无限递归解析实体
|
||||
if (MetadataContext.ensureFieldClassHaveParse(uuid, field.getGenericType())) {
|
||||
fieldInfo = FieldDescriptionUtil.createBasicMetadata(field, uuid);
|
||||
} else {
|
||||
fieldInfo = FieldDescriptionUtil.createFieldMetadata(field, uuid);
|
||||
}
|
||||
fieldMetadata.add(fieldInfo);
|
||||
}
|
||||
processClassFields(objectClass, fieldMetadata, uuid);
|
||||
break;
|
||||
case OBJECT_WITH_GENERIC:
|
||||
// 如果是带泛型的Object实体类型
|
||||
|
@ -170,4 +150,40 @@ public class ClassDetailMetadataFactory {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定类的字段信息,增加可以获取父级的类的字段
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @since 2022/1/14 18:51
|
||||
*/
|
||||
private static void processClassFields(Class<?> clazz, Set<FieldMetadata> fieldMetadata, String uuid) {
|
||||
if (clazz == null || clazz == Object.class) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 在处理Object中所有字段之前,将当前父类放进context,所有子字段不能含有父类的类型,否则会递归
|
||||
MetadataContext.addClassRecord(uuid, clazz.getName());
|
||||
|
||||
Field[] fields = clazz.getDeclaredFields();
|
||||
for (Field field : fields) {
|
||||
FieldMetadata fieldInfo;
|
||||
|
||||
// 判断字段是否是基础字段例如serialVersionUID,或者delFlag等字段
|
||||
if (ScannerConstants.DONT_PARSE_FIELD.contains(field.getName())) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// 判断该实体是否被解析过,防止无限递归解析实体
|
||||
if (MetadataContext.ensureFieldClassHaveParse(uuid, field.getGenericType())) {
|
||||
fieldInfo = FieldDescriptionUtil.createBasicMetadata(field, uuid);
|
||||
} else {
|
||||
fieldInfo = FieldDescriptionUtil.createFieldMetadata(field, uuid);
|
||||
}
|
||||
fieldMetadata.add(fieldInfo);
|
||||
}
|
||||
|
||||
// 递归处理父类
|
||||
processClassFields(clazz.getSuperclass(), fieldMetadata, uuid);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue