From 8f0319c648dff2a996e802db8dca6250936a67ab Mon Sep 17 00:00:00 2001 From: qcqcqc <1220204124@zust.edu.cn> Date: Tue, 13 Jan 2026 15:02:37 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=B8=80=E5=A4=84mysq?= =?UTF-8?q?l=E7=9A=84filter=E6=B7=B1=E5=B1=82=E8=B0=83=E7=94=A8=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E8=A1=A8=E8=BE=BE=E5=BC=8F=E6=97=B6=E4=BC=9A=E5=87=BA?= =?UTF-8?q?=E7=8E=B0=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/MySQL/translator.js | 6 ++++-- src/MySQL/translator.ts | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/MySQL/translator.js b/lib/MySQL/translator.js index 1c8beef..4e25c5e 100644 --- a/lib/MySQL/translator.js +++ b/lib/MySQL/translator.js @@ -872,8 +872,10 @@ class MySqlTranslator extends sqlTranslator_1.SqlTranslator { const refId = (expr)['#refId']; const refAttr = (expr)['#refAttr']; (0, assert_1.default)(refDict[refId]); - const attrText = `\`${refDict[refId][0]}\`.\`${refAttr}\``; - result = this.translateAttrInExpression(entity, (expr)['#refAttr'], attrText); + const [refAlias, refEntity] = refDict[refId]; + const attrText = `\`${refAlias}\`.\`${refAttr}\``; + // 这里必须使用refEntity,否则在filter深层嵌套节点表达式时会出现entity不对应 + result = this.translateAttrInExpression(refEntity, (expr)['#refAttr'], attrText); } else { (0, assert_1.default)(k.length === 1); diff --git a/src/MySQL/translator.ts b/src/MySQL/translator.ts index 67675be..2d8ebc1 100644 --- a/src/MySQL/translator.ts +++ b/src/MySQL/translator.ts @@ -971,8 +971,10 @@ export class MySqlTranslator extends Sql const refAttr = (expr)['#refAttr']; assert(refDict[refId]); - const attrText = `\`${refDict[refId][0]}\`.\`${refAttr}\``; - result = this.translateAttrInExpression(entity, (expr)['#refAttr'], attrText); + const [refAlias, refEntity] = refDict[refId]; + const attrText = `\`${refAlias}\`.\`${refAttr}\``; + // 这里必须使用refEntity,否则在filter深层嵌套节点表达式时会出现entity不对应 + result = this.translateAttrInExpression(refEntity as T, (expr)['#refAttr'], attrText); } else { assert(k.length === 1);