Skip to content

Commit 9d1fc1b

Browse files
committed
refactor: 优化asTreeCTE返回dto时的self和target的处理
1 parent 81a5e59 commit 9d1fc1b

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

sql-core/src/main/java/com/easy/query/core/basic/api/select/abstraction/AbstractClientQueryable.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -543,9 +543,11 @@ public List<T1> toTreeList(boolean ignore) {
543543
return EasyTreeUtil.generateTrees(list, entityMetadata, treeNavigateMetadata, treeSelfTargetItem, runtimeContext, treeCTEOption, deepItems);
544544
}
545545

546-
private TreeSelfTargetItem getTreeSelfTargetItem(NavigateMetadata treeNavigateMetadata) {
547-
if (EasyStringUtil.isNotBlank(this.entityMetadata.getTableName()) || EasyArrayUtil.isNotEmpty(treeNavigateMetadata.getSelfProperties())) {
548-
return new TreeSelfTargetItem(treeNavigateMetadata.getSelfPropertiesOrPrimary(), treeNavigateMetadata.getTargetPropertiesOrPrimary(runtimeContext));
546+
private TreeSelfTargetItem getTreeSelfTargetItem(NavigateMetadata resultTreeNavigateMetadata) {
547+
//如果当前返回的对象是表对象或者如果不是表对象就判断self和target已经设置了那么就是用对应的self和target作为组成树时的必要属性
548+
if (EasyStringUtil.isNotBlank(this.entityMetadata.getTableName())
549+
|| EasyArrayUtil.isNotEmpty(resultTreeNavigateMetadata.getSelfProperties())) {
550+
return new TreeSelfTargetItem(resultTreeNavigateMetadata.getSelfPropertiesOrPrimary(), resultTreeNavigateMetadata.getTargetPropertiesOrPrimary(runtimeContext));
549551
}
550552
EntityTableExpressionBuilder fromTableExpressionBuilder = this.entityQueryExpressionBuilder.getFromTable();
551553

@@ -559,12 +561,17 @@ private TreeSelfTargetItem getTreeSelfTargetItem(NavigateMetadata treeNavigateMe
559561
MergeTuple2<NavigateMetadata, String> fromTableTreeNavigateMetadataTuple = getTreeNavigateMetadata(fromTableEntityMetadata);
560562
NavigateMetadata fromTableTreeNavigateMetadata = fromTableTreeNavigateMetadataTuple.t1;
561563
if (fromTableTreeNavigateMetadata != null) {
562-
return new TreeSelfTargetItem(fromTableTreeNavigateMetadata.getSelfPropertiesOrPrimary(), fromTableTreeNavigateMetadata.getTargetPropertiesOrPrimary(runtimeContext));
564+
//如果from的表self和target都在返回结果中那么才使用
565+
String[] selfProps = fromTableTreeNavigateMetadata.getSelfPropertiesOrPrimary();
566+
String[] targetProps = fromTableTreeNavigateMetadata.getTargetPropertiesOrPrimary(runtimeContext);
567+
if (EasyCollectionUtil.all(selfProps, self -> this.entityMetadata.getColumnOrNull(self) != null)
568+
&& EasyCollectionUtil.all(targetProps, target -> this.entityMetadata.getColumnOrNull(target) != null))
569+
return new TreeSelfTargetItem(selfProps, targetProps);
563570
}
564571
}
565572
}
566573
}
567-
return new TreeSelfTargetItem(treeNavigateMetadata.getSelfPropertiesOrPrimary(), treeNavigateMetadata.getTargetPropertiesOrPrimary(runtimeContext));
574+
return new TreeSelfTargetItem(resultTreeNavigateMetadata.getSelfPropertiesOrPrimary(), resultTreeNavigateMetadata.getTargetPropertiesOrPrimary(runtimeContext));
568575
}
569576

570577

0 commit comments

Comments
 (0)