问题
使用postgresql根据json对象字段属性进行条件查询(content字段为json对象)
select * from test where content::json->>'value' != '0'
报错net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: “->>”
原因
该查询使用了mybatis-plus分页插件PaginationInnerInterceptor进行分页查询,默认自动优化 COUNT SQL,使用的mybatis-plus版本为3.4.3.2,其jsqlparser版本为4.0,解析时报错,无法优化会使用原sql,因此可以正常查询,只不过会打印错误日志。
两种解决办法
1.修改pom.xml文件
排除mybatis-plus自带的jsqlparser,引入jsqlparser4.2版本
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3.2</version>
<exclusions>
<!-- 解决jsqlparser 依赖版本冲突 -->
<exclusion>
<artifactId>jsqlparser</artifactId>
<groupId>com.github.jsqlparser</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<version>4.2</version>
</dependency>
2.使用分页查询之前,手动设置OptimizeCountSql为false
// 关闭自动优化
page.setOptimizeCountSql(false);