当前使用版本(必填,否则不予处理)
3.4.2
该问题是如何引起的?(确定最新版也有问题再提!!!)
1.自定义一个A表的XML 2.传入QueryWrapper对象作为Where条件( ${ew.customSqlSegment} ) 3.传入Page对象作为分页条件 4.同时关联B表
此时分页插件只会出现一个表
SELECT COUNT(*) FROM 表 AS t1 WHERE (Wrapper生成的条件)
而Wrapper的条件中包含了B表的字段,就会报字段不存在的错:
Cause: java.sql.SQLSyntaxErrorException: Unknown column '字段' in 'where clause'
原因:
因为分页插件count时只有一个A表,但如果移除掉Wrapper的条件,改为直接写死在xml中,则插件会带上该关联表
暂时解决方案:
1.在xml中写死一个表B的无意义的相等条件,这样插件就能扫到。 2.分页插件关掉连表优化,optimizeJoin =false,但是只针对left join
推测
有可能先分页后注入的条件,导致分页无法分析到注入的条件,表B自动被优化掉了
Comment From: qmdx
未提供明显不可用复杂 sql 无法测试,如果 sql 无法解析可以反馈 至 https://github.com/JSQLParser/JSqlParser
关闭 page 自动优化