当前使用版本(必填,否则不予处理)
3.4.1
该问题是如何引起的?(确定最新版也有问题再提!!!)
数据库是mysql,其中一张表的一个列名是sequence,使用ServiceImpl 中page方法会报错。但是不影响使用。 不过select count变成如下sql: SELECT COUNT(*) FROM (SELECT id,...,sequence,... FROM invoice_ex) TOTAL
使用BaseMapper的selectPage 生成的 SELECT COUNT(*) 也是这样,但是不报错。
后来通过 @TableField(value="sequence") 就能解决
希望开发者考虑一下:对所有列名,根据数据库类型,或者使用者自己的配置 ,自动添加区分符号(比如 mysql的反引号,oracle的 双引号 等等)。
重现步骤(如果有就写完整)
1 mysql数据库,表中的列名包含sequence 2 使用分页插件 3 调用ServiceImpl中的page方法。
报错信息
使用ServiceImpl: WARN c.b.m.e.plugins.inner.PaginationInnerInterceptor - optimize this sql to a count sql has exception, sql:"SELECT id,..,sequence,.... FROM invoice_ex", exception: net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "sequence" "SEQUENCE" at line 1, column 42.
Was expecting one of:
"!"
"("
"*"
"+"
"-"
":"
"?"
"@"
"@@"
"ACTION"
"ANY"
"BYTE"
"CASCADE"
"CASE"
"CAST"
"CHANGE"
"CHAR"
"CHARACTER"
"COLUMN"
"COLUMNS"
"COMMENT"
"COMMIT"
"CREATE"
"CURRENT"
"CYCLE"
"DESCRIBE"
"DISABLE"
"DO"
"DOUBLE"
"DUPLICATE"
"ENABLE"
"END"
"EXTRACT"
"FALSE"
"FIRST"
"FN"
"FOLLOWING"
"GROUP"
"GROUP_CONCAT"
"IF"
"IIF"
"INDEX"
"INSERT"
"INTERVAL"
"ISNULL"
"KEY"
"LAST"
"LEFT"
"LIMIT"
"MATCH"
"MATERIALIZED"
"NEXTVAL"
"NO"
"NOLOCK"
"NOT"
"NULL"
"NULLS"
"OFFSET"
"ON"
"OPEN"
"OPTIMIZE"
"ORDER"
"OVER"
"PARTITION"
"PATH"
"PERCENT"
"PRECISION"
"PRIMARY"
"PRIOR"
"PROCEDURE"
"RANGE"
"READ"
"REPLACE"
"RIGHT"
"ROW"
"ROWS"
"SCHEMA"
"SEPARATOR"
"SESSION"
"SET"
"SIBLINGS"
"SIZE"
"START"
"TABLE"
"TEMP"
"TEMPORARY"
"TOP"
"TRUE"
"TRUNCATE"
"TYPE"
"UNSIGNED"
"VALIDATE"
"VALUE"
"VALUES"
"VIEW"
"XML"
"ZONE"
"{"
"{d"
"{t"
"{ts"
"~"
<K_DATETIMELITERAL>
<K_DATE_LITERAL>
<K_TIME_KEY_EXPR>
<S_CHAR_LITERAL>
<S_DOUBLE>
<S_HEX>
<S_IDENTIFIER>
<S_LONG>
<S_QUOTED_IDENTIFIER>
Comment From: miemieYaho
不会自动加