From 217b79b74ac8830e9f1fb574f09ec7de25689a5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=80=E6=BA=90=E6=B5=B7=E5=93=A5?= Date: Fri, 7 Jul 2023 10:25:02 +0800 Subject: [PATCH] optimize TableInfo.buildResultMap() --- .../java/com/mybatisflex/core/table/TableInfo.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) 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 0bf15ef6..a0247921 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 @@ -831,15 +831,15 @@ public class TableInfo { public ResultMap buildResultMap(Configuration configuration) { - return doBuildResultMap(configuration, new HashSet<>(), new HashSet<>(), false); + return doBuildResultMap(configuration, new HashSet<>(), new HashSet<>(), false, getTableNameWithSchema()); } - private ResultMap doBuildResultMap(Configuration configuration, Set resultMapIds, Set existMappingColumns, boolean isNested) { + private ResultMap doBuildResultMap(Configuration configuration, Set resultMapIds, Set existMappingColumns, boolean isNested, String nestedPrefix) { - String resultMapId = isNested ? "nested:" + entityClass.getName() : entityClass.getName(); + String resultMapId = isNested ? "nested-" + nestedPrefix + ":" + entityClass.getName() : entityClass.getName(); //是否有循环引用 - boolean withCircularReference = resultMapIds.contains(resultMapId); + boolean withCircularReference = resultMapIds.contains(resultMapId) || resultMapIds.contains(entityClass.getName()); if (withCircularReference) { return null; } @@ -869,7 +869,7 @@ public class TableInfo { // 获取嵌套类型的信息,也就是 javaType 属性 TableInfo tableInfo = TableInfoFactory.ofEntityClass(fieldType); // 构建嵌套类型的 ResultMap 对象,也就是 标签下的内容 - ResultMap nestedResultMap = tableInfo.doBuildResultMap(configuration, resultMapIds, existMappingColumns, true); + ResultMap nestedResultMap = tableInfo.doBuildResultMap(configuration, resultMapIds, existMappingColumns, true, nestedPrefix); if (nestedResultMap != null) { resultMappings.add(new ResultMapping.Builder(configuration, fieldName) .javaType(fieldType) @@ -902,7 +902,7 @@ public class TableInfo { // 获取集合泛型类型的信息,也就是 ofType 属性 TableInfo tableInfo = TableInfoFactory.ofEntityClass(genericClass); // 构建嵌套类型的 ResultMap 对象,也就是 标签下的内容 - ResultMap nestedResultMap = tableInfo.doBuildResultMap(configuration, resultMapIds, existMappingColumns, true); + ResultMap nestedResultMap = tableInfo.doBuildResultMap(configuration, resultMapIds, existMappingColumns, true, nestedPrefix); if (nestedResultMap != null) { resultMappings.add(new ResultMapping.Builder(configuration, field.getName()) .javaType(field.getType())