当前使用版本(必填,否则不予处理)

3.4.1

该问题是如何引起的?(确定最新版也有问题再提!!!)

多租户模式下,拼接leftjoin出错

重现步骤(如果有就写完整)

报错信息

9a3a426b9888be4eee076c17138c3db

Comment From: miemieYaho

想表达什么说清楚

Comment From: myeclipse2016

223行的setOnExpression 是一个弃用的方法,这个方法并不是真正的set方法,而是add到0的位置。 导致join中有两组表达式,渲染的时候就回都拼接sql。 sql 结果期望值是 JOIN sc_product p on p.id = t.product_id AND p.tenant_id = '001' sql拼接结果是
JOIN sc_product p on p.id = t.product_id AND p.tenant_id = '001' on p.id = t.product_id

Comment From: myeclipse2016

我这边版本 3.4.3 通过复写TenantLineInnerInterceptor 修改223行可解决 join.setOnExpressions(Collections.singletonList(builderExpression(join.getOnExpression(), fromTable)));

Comment From: telsav

解决了吗

Comment From: fengsam6

(

有效,厉害

Comment From: muyi-zcy

厉害

Comment From: myeclipse2016

JSqlParser 版本bug,JSqlParser 4.2会出现这个bug,换成4.0可解决

4782 jsqlparser-4.4版本似乎也有问题,未验证