当前使用版本(必填,否则不予处理)
3.4.1
该问题是如何引起的?(确定最新版也有问题再提!!!)
xml execute sql error,page count error,add /keep orderby/ count execute error
Encountered unexpected token
重现步骤(如果有就写完整)
define:
@InterceptorIgnore(tenantLine = "true", blockAttack = "true")
List
xml:
select
a.region_id region,
a.org_id organizeId,
a.meal_type_id mealTypeId
from (
select
b.region_id,
b.org_id,
a.meal_type_id
from (
select
a.customer_id,
a.meal_type_id
from cai_dining_calendar a
<where>
a.eat_flag = 1 and a.dining_date = #{diningDate} and a.tenant_code = #{tenantCode}
<if test="mealTypeIds != null and mealTypeIds.size > 0">
and a.meal_type_id in
<foreach collection="mealTypeIds" item="mealTypeId" index="index" open="(" close=")" separator=",">
#{mealTypeId}
</foreach>
</if>
</where>
) a inner join json_table (
#{regionOrgCustomerRelTable},
'$[*]' COLUMNS (
`region_id` bigint PATH '$.a' ERROR ON ERROR,
`org_id` bigint PATH '$.b' ERROR ON ERROR,
`customer_id` bigint PATH '$.c' ERROR ON ERROR
)
) b on a.customer_id = b.customer_id
group by b.region_id,b.org_id,a.meal_type_id
) a
order by a.region_id,a.org_id,a.meal_type_id
/*keep orderby*/
报错信息
at com.baomidou.mybatisplus.core.toolkit.ExceptionUtils.mpe(ExceptionUtils.java:39) at com.baomidou.mybatisplus.extension.parser.JsqlParserSupport.parserSingle(JsqlParserSupport.java:37) at com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor.beforeQuery(TenantLineInnerInterceptor.java:70) at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:62) at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61) at com.sun.proxy.$Proxy407.query(Unknown Source) at com.github.pagehelper.util.ExecutorUtil.executeAutoCount(ExecutorUtil.java:166) at com.github.pagehelper.PageInterceptor.count(PageInterceptor.java:157) at com.github.pagehelper.PageInterceptor.intercept(PageInterceptor.java:100) at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61) at com.sun.proxy.$Proxy407.query(Unknown Source) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147) ... 119 common frames omitted Caused by: net.sf.jsqlparser.JSQLParserException: null at net.sf.jsqlparser.parser.CCJSqlParserUtil.parse(CCJSqlParserUtil.java:65) at net.sf.jsqlparser.parser.CCJSqlParserUtil.parse(CCJSqlParserUtil.java:40) at com.baomidou.mybatisplus.extension.parser.JsqlParserSupport.parserSingle(JsqlParserSupport.java:34) ... 129 common frames omitted Caused by: net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "(" "(" at line 19, column 39.
Was expecting one of:
")"
","
"ACTION"
..............
at net.sf.jsqlparser.parser.CCJSqlParser.generateParseException(CCJSqlParser.java:25031)
at net.sf.jsqlparser.parser.CCJSqlParser.jj_consume_token(CCJSqlParser.java:24875)
at net.sf.jsqlparser.parser.CCJSqlParser.FromItem(CCJSqlParser.java:5941)
at net.sf.jsqlparser.parser.CCJSqlParser.PlainSelect(CCJSqlParser.java:4055)
at net.sf.jsqlparser.parser.CCJSqlParser.SetOperationList(CCJSqlParser.java:4264)
at net.sf.jsqlparser.parser.CCJSqlParser.SelectBody(CCJSqlParser.java:3923)
at net.sf.jsqlparser.parser.CCJSqlParser.SubSelect(CCJSqlParser.java:12580)
at net.sf.jsqlparser.parser.CCJSqlParser.FromItem(CCJSqlParser.java:5840)
at net.sf.jsqlparser.parser.CCJSqlParser.PlainSelect(CCJSqlParser.java:4055)
at net.sf.jsqlparser.parser.CCJSqlParser.SetOperationList(CCJSqlParser.java:4264)
at net.sf.jsqlparser.parser.CCJSqlParser.SelectBody(CCJSqlParser.java:3923)
at net.sf.jsqlparser.parser.CCJSqlParser.Select(CCJSqlParser.java:3916)
at net.sf.jsqlparser.parser.CCJSqlParser.SingleStatement(CCJSqlParser.java:130)
at net.sf.jsqlparser.parser.CCJSqlParser.Statement(CCJSqlParser.java:81)
at net.sf.jsqlparser.parser.CCJSqlParserUtil.parse(CCJSqlParserUtil.java:63)
... 131 common frames omitted
Comment From: miemieYaho
jsqlparser 不支持
Comment From: 2259289435
可以通过升级解决问题吗?
Comment From: miemieYaho
你这看着像想不走租户插件但是走了租户插件,方便提供一下完整的demo吗?
或者你也可以自己debug InterceptorIgnoreHelper#willIgnoreTenantLine方法看看是什么原因
Comment From: qmdx
up
Comment From: JunCheung
遇到同样的问题,sql语句中使用json_table就出现