diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/TableInfo.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/TableInfo.java index a4a6a671..346407e7 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/TableInfo.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/table/TableInfo.java @@ -694,7 +694,11 @@ public class TableInfo { //是否有循环引用 boolean withCircularReference = context.contains(entityClass.getName()); - String resultMapId = entityClass.getName() + (withCircularReference ? "$nested" : ""); + if (withCircularReference) { + return null; + } + + String resultMapId = entityClass.getName(); context.add(resultMapId); if (configuration.hasResultMap(resultMapId)) { @@ -734,30 +738,34 @@ public class TableInfo { } // 标签下的 标签映射 - if (!withCircularReference && associationType != null) { + if (associationType != null) { associationType.forEach((fieldName, fieldType) -> { // 获取嵌套类型的信息,也就是 javaType 属性 TableInfo tableInfo = TableInfoFactory.ofEntityClass(fieldType); // 构建嵌套类型的 ResultMap 对象,也就是 标签下的内容 ResultMap nestedResultMap = tableInfo.doBuildResultMap(configuration, context); - resultMappings.add(new ResultMapping.Builder(configuration, fieldName) - .javaType(fieldType) - .nestedResultMapId(nestedResultMap.getId()) - .build()); + if (nestedResultMap != null) { + resultMappings.add(new ResultMapping.Builder(configuration, fieldName) + .javaType(fieldType) + .nestedResultMapId(nestedResultMap.getId()) + .build()); + } }); } // 标签下的 标签映射 - if (!withCircularReference && collectionType != null) { + if (collectionType != null) { collectionType.forEach((field, genericClass) -> { // 获取集合泛型类型的信息,也就是 ofType 属性 TableInfo tableInfo = TableInfoFactory.ofEntityClass(genericClass); // 构建嵌套类型的 ResultMap 对象,也就是 标签下的内容 ResultMap nestedResultMap = tableInfo.doBuildResultMap(configuration, context); - resultMappings.add(new ResultMapping.Builder(configuration, field.getName()) - .javaType(field.getType()) - .nestedResultMapId(nestedResultMap.getId()) - .build()); + if (nestedResultMap != null) { + resultMappings.add(new ResultMapping.Builder(configuration, field.getName()) + .javaType(field.getType()) + .nestedResultMapId(nestedResultMap.getId()) + .build()); + } }); }