当前使用版本(必填,否则不予处理)
3.4.1
该问题是如何引起的?(确定最新版也有问题再提!!!)
多租户模式下,拼接leftjoin出错
重现步骤(如果有就写完整)
报错信息
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可解决