mybatisplus报错Encountered unexpected token: "(" "("

Blade 未结 1 251

一、该问题的重现步骤是什么?

1. bladex版本3.0.1.RELEASE

<bladex.project.version>3.0.1.RELEASE</bladex.project.version>

2. 当Mapper.xml里有包含子查询的sql语句被执行时,报错

at com.baomidou.mybatisplus.core.toolkit.ExceptionUtils.mpe(ExceptionUtils.java:39)

at com.baomidou.mybatisplus.extension.parser.JsqlParserSupport.parserSingle(JsqlParserSupport.java:52)

at com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor.beforeQuery(TenantLineInnerInterceptor.java:65)

at com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:78)

at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62)

at com.sun.proxy.$Proxy990.query(Unknown Source)

at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151)

... 134 common frames omitted

Caused by: net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "(" "("

    at line 12, column 15.


Was expecting one of:


    "&"

    "::"

    ";"

    "<<"

    ">>"

    "ACTION"

    "ACTIVE"

    "ALGORITHM"

    "ARCHIVE"

    "ARRAY"

    "AS"

    "AT"

    "BYTE"

    "CASCADE"

    "CASE"

    "CAST"

    "CHANGE"

    "CHAR"

请问有什么解决的办法么?


@InterceptorIgnore(tenantLine = "true")

该注解试过无法解决

1条回答
  • 你的sql有问题吧,把sql打印出来拿去数据库执行看下能不能执行。

    作者追问:2023-05-06 11:22

    sql直接执行是可以的

    作者追问:2023-05-06 11:27

    sql直接执行是正常的

    相同的逻辑在其他项目中(bladex版本2.8.1.RELEASE,mybatisplus版本3.4.2)是正常的,sql也是正常的

    但在bladex版本3.0.1.RELEASE,mybatisplus版本3.5.2中就报异常

    我遇到的问题与https://blog.csdn.net/susu1083018911/article/details/123233230这个问题相似


    作者追问:2023-05-06 11:57

    用原生的mybatis-plus工程做一个demo,测试下你的这种写法在对应版本是否能生效。

    如果脱离bladex,你的这个写法可以生效,麻烦把集成在bladex的demo发一份给我们:bladejava@qq.com

    如果脱离bladex依旧无法生效,麻烦给mybatis-plus官方发个issue汇报下bug:https://gitee.com/baomidou/mybatis-plus/issues

    0 讨论(0)
提交回复