diff --git a/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/sql/terms/TreeChildTermBuilder.java b/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/sql/terms/TreeChildTermBuilder.java index 7f2318e02..83a2a56ac 100644 --- a/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/sql/terms/TreeChildTermBuilder.java +++ b/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/sql/terms/TreeChildTermBuilder.java @@ -33,19 +33,23 @@ public abstract class TreeChildTermBuilder extends AbstractTermFragmentBuilder { Arrays.fill(args, "?"); RDBColumnMetadata pathColumn = column - .getOwner() - .getColumn("path") - .orElseThrow(() -> new IllegalArgumentException("not found 'path' column")); + .getOwner() + .getSchema() + .getTable(tableName) + .flatMap(t -> t.getColumn("path")) + .orElseThrow(() -> new IllegalArgumentException("not found 'path' column")); RDBColumnMetadata idColumn = column - .getOwner() - .getColumn("id") - .orElseThrow(() -> new IllegalArgumentException("not found 'id' column")); + .getOwner() + .getSchema() + .getTable(tableName) + .flatMap(t -> t.getColumn("id")) + .orElseThrow(() -> new IllegalArgumentException("not found 'id' column")); return PrepareSqlFragments .of().addSql( "exists(select 1 from", tableName, "_p join", tableName, - "_c on", idColumn.getFullName("_c"), "in(", String.join("?", args), ")", + "_c on", idColumn.getFullName("_c"), "in(", String.join(",", args), ")", "and", pathColumn.getFullName("_p"), "like concat(" + pathColumn.getFullName("_c") + ",'%')", "where", columnFullName, "=", idColumn.getFullName("_p"), ")" )