MyBatis Plus: 解决“Failed to process, Error SQL: insert into ... output inserted.id”错误
在使用 MyBatis Plus 进行 SQL 插入操作时,可能会遇到以下错误:
Caused by: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Failed to process, Error SQL: insert into APS_IRON_PRO_ASSEMBLY_CONFIG (assemblyType,processAssemblyJson,ironType,yokeSideStructure,wiotCode,apsDeviceName,createUser,singlePillarProcessType,createTime,lastEditUser,lastTime,isDeleted,baseCalType,pillarCode,scriptId,efficiencyCalType)
output inserted.id
values
(?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?,?,?)
,
(?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?,?,?)
at com.baomidou.mybatisplus.core.toolkit.ExceptionUtils.mpe(ExceptionUtils.java:39)
at com.baomidou.mybatisplus.extension.parser.JsqlParserSupport.parserSingle(JsqlParserSupport.java:52)
at com.pttx.aps.framework.interceptor.PlusDataPermissionInterceptor.beforeQuery(PlusDataPermissionInterceptor.java:49)
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.$Proxy277.query(Unknown Source)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151)
... 122 common frames omitted
Caused by: net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: 'output' <S_IDENTIFIER>
at line 2, column 9.
Was expecting one of:
'('
'SET'
'VALUES'
'WITH'
<K_SELECT>
该错误是因为在 SQL 语句中使用了 SQL Server 特有的 'output' 关键字,而 MyBatis Plus 没有对其进行处理导致的。
解决方式有两种:
-
升级 MyBatis Plus 版本到 3.4.0 以上,该版本已经对 'output' 关键字进行了处理。
-
手动处理 SQL 语句,在 'output' 关键字前添加一个分号,即在 SQL 语句中添加一个分号,如下所示:
insert into APS_IRON_PRO_ASSEMBLY_CONFIG (assemblyType,processAssemblyJson,ironType,yokeSideStructure,wiotCode,apsDeviceName,createUser,singlePillarProcessType,createTime,lastEditUser,lastTime,isDeleted,baseCalType,pillarCode,scriptId,efficiencyCalType)
;output inserted.id
values
(?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?,?,?)
,
(?, ?, ?, ?, ?,?,?,?,?,?,?,?,?,?,?,?)
以上是解决该错误的两种方式,可以根据实际情况选择其中一种进行处理。
原文地址: https://www.cveoy.top/t/topic/oFct 著作权归作者所有。请勿转载和采集!