当前使用版本(必填,否则不予处理)

3.5.2

该问题是如何引起的?(确定最新版也有问题再提!!!)

之前是什么版本忘记了,升级到了3.5.2版本,我的自定义sql突然全都不能执行了 报了 nested exception is org.apache.ibatis.exceptions.PersistenceException:

sql我一直没有动过,升级完版本就不能执行了。

Error querying database. Cause: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Failed to process, Error SQL: SELECT osr.id, osr.account_name AS accountName, osr.account_id AS accountId, osr.quality, osr.attendance, osr.discipline, osr.work, osr.summary, osr.evaluate, osr.score, osr.add_subtract_score AS addSubtractScore, osr.status, osr.periodic_id AS periodicId, CASE osr.grade WHEN '0' THEN '好' WHEN '1' THEN '较好' WHEN '2' THEN '一般' WHEN '3' THEN '较差' ELSE '不定等次' END AS grade, IF(grade = '-1',999,grade) AS gradeValue, (SELECT GROUP_CONCAT(dept_name) FROM blade_dept WHERE is_deleted = 0 AND tenant_id = ? AND (bu.dept_id = id OR bu.dept_id LIKE CONCAT(id,",%") OR bu.dept_id LIKE CONCAT("%,",id,",%") OR bu.dept_id LIKE CONCAT("%,",id))) AS deptName, osr.dept_id AS deptId, (SELECT CONCAT(DATE_FORMAT(oep.start_time, '%Y-%m-%d'), '~', DATE_FORMAT(oep.end_time, '%Y-%m-%d')) periodTime FROM ouhai_evaluate_period oep WHERE oep.is_deleted = 0 AND tenant_id = ? AND oep.id = ?) periodTime FROM ouhai_statistics_result osr LEFT JOIN blade_user bu ON bu.account = osr.account_id AND bu.is_deleted = 0 AND bu.tenant_id = ? WHERE osr.is_deleted = 0 AND bu.sta_exclude = 0 AND osr.tenant_id = ? AND osr.periodic_id = ?

我看调用的打印sql变成了 Error querying database. Cause: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Failed to process, Error SQL: SELECT osr.id, osr.account_name AS accountName, osr.account_id AS accountId, osr.quality, osr.attendance, osr.discipline, osr.work, osr.summary, osr.evaluate, osr.score, osr.add_subtract_score AS addSubtractScore, osr.status, osr.periodic_id AS periodicId, CASE osr.grade WHEN ''0'' THEN ''好'' WHEN ''1'' THEN ''较好'' WHEN ''2'' THEN ''一般'' WHEN ''3'' THEN ''较差'' ELSE ''不定等次'' END AS grade, IF(grade = ''-1'',999,grade) AS gradeValue, (SELECT GROUP_CONCAT(dept_name) FROM blade_dept WHERE is_deleted = 0 AND tenant_id = ? AND (bu.dept_id = id OR bu.dept_id LIKE CONCAT(id,",%") OR bu.dept_id LIKE CONCAT("%,",id,",%") OR bu.dept_id LIKE CONCAT("%,",id))) AS deptName, osr.dept_id AS deptId, (SELECT CONCAT(DATE_FORMAT(oep.start_time, ''%Y-%m-%d''), ''~'', DATE_FORMAT(oep.end_time, ''%Y-%m-%d'')) periodTime FROM ouhai_evaluate_period oep WHERE oep.is_deleted = 0 AND tenant_id = ?

比我写的多了一堆单引号,这是怎么回事啊? 有办法在不修改sql的情况下一键配置吗?有很多相关sql

Comment From: qmdx

从你目前提供的信息无法确认错误点在哪儿,一般无法执行可能是 jsqlparser 导致,你如果使用了插件可以排查后试试看

Comment From: miemieYaho

jsqlparser降级

Comment From: yzystart

要降级到哪个版本?

Comment From: yzystart

已解决! 原因是因为sql中用到了关键字work ,好像以前版本的jsqlParser支持,新版要重写sql,关键字加上单引号 work