fix: 修复树结构条件构造器列获取错误 (#267)

* fix: 修复树结构条件构造器列获取错误

* fix: 修复sql参数拼接问题
This commit is contained in:
gyl
2024-01-12 14:30:35 +08:00
committed by GitHub
parent 8a7d881ca2
commit 274c2f7a6c

View File

@@ -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"), ")"
)