From 274c2f7a6c91252fc5c3f5da5d4f596fc3c063eb Mon Sep 17 00:00:00 2001 From: gyl <80454341+goten7@users.noreply.github.com> Date: Fri, 12 Jan 2024 14:30:35 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=A0=91=E7=BB=93?= =?UTF-8?q?=E6=9E=84=E6=9D=A1=E4=BB=B6=E6=9E=84=E9=80=A0=E5=99=A8=E5=88=97?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E9=94=99=E8=AF=AF=20(#267)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: 修复树结构条件构造器列获取错误 * fix: 修复sql参数拼接问题 --- .../crud/sql/terms/TreeChildTermBuilder.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) 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"), ")" )