mirror of
https://gitee.com/mybatis-flex/mybatis-flex.git
synced 2025-12-08 01:28:24 +08:00
fix: 重名字段查找不全问题。https://gitee.com/mybatis-flex/mybatis-flex/issues/I9FW4O
This commit is contained in:
parent
d3135c2d6b
commit
44657aa883
@ -84,7 +84,6 @@ import java.util.StringJoiner;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static com.mybatisflex.core.constant.SqlConsts.AND;
|
||||
import static com.mybatisflex.core.constant.SqlConsts.EQUALS_PLACEHOLDER;
|
||||
@ -1036,18 +1035,35 @@ public class TableInfo {
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
private void getCombinedColumns(List<Class<?>> existedEntities, Class<?> entityClass, List<String> combinedColumns) {
|
||||
if (existedEntities.contains(entityClass)) {
|
||||
return;
|
||||
}
|
||||
|
||||
existedEntities.add(entityClass);
|
||||
|
||||
TableInfo tableInfo = TableInfoFactory.ofEntityClass(entityClass);
|
||||
|
||||
combinedColumns.addAll(Arrays.asList(tableInfo.allColumns));
|
||||
|
||||
if (tableInfo.collectionType != null) {
|
||||
tableInfo.collectionType.values()
|
||||
.forEach(e -> getCombinedColumns(existedEntities, e, combinedColumns));
|
||||
}
|
||||
|
||||
if (tableInfo.associationType != null) {
|
||||
tableInfo.associationType.values()
|
||||
.forEach(e -> getCombinedColumns(existedEntities, e, combinedColumns));
|
||||
}
|
||||
}
|
||||
|
||||
public ResultMap buildResultMap(Configuration configuration) {
|
||||
// 所有的嵌套类对象引用
|
||||
Stream<Class<?>> ct = collectionType == null ? Stream.empty() : collectionType.values().stream();
|
||||
Stream<Class<?>> at = associationType == null ? Stream.empty() : associationType.values().stream();
|
||||
List<String> combinedColumns = new ArrayList<>();
|
||||
|
||||
Stream<String> nestedColumns = Stream.concat(at, ct)
|
||||
.map(TableInfoFactory::ofEntityClass)
|
||||
.flatMap(e -> Arrays.stream(e.allColumns));
|
||||
getCombinedColumns(new ArrayList<>(), entityClass, combinedColumns);
|
||||
|
||||
// 预加载所有重复列,用于判断重名属性
|
||||
List<String> existedColumns = Stream.concat(Arrays.stream(allColumns), nestedColumns)
|
||||
List<String> existedColumns = combinedColumns.stream()
|
||||
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()))
|
||||
.entrySet()
|
||||
.stream()
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user