243 Star 2.7K Fork 562

MyBatis-Flex/MyBatis-Flex

子查询 参数解析错误(错位)

已完成
创建于  
2023-05-04 17:29

问题描述

进行 select a.* from table1 a inner join (select * from table2 where col = 1 ) on a.id = b.ia
这种子查询 的时候 sql 的参数解析会有问题,导致最后一个参数没有被填充

我当前使用 Mybatis-Flex 版本是?

1.20

错误信息是?(截图或日志)

QueryWrapper 组装信息

解析成sql的样子

SQL: SELECT COUNT(*) FROM jx_kpiconfig LEFT JOIN jx_kpi_config_result ON jx_kpi_config_result.configid = jx_kpiconfig.id LEFT JOIN (SELECT * FROM jx_kpi_step WHERE status = ? ORDER BY step ASC LIMIT 1) AS a ON jx_kpiconfig.id = a.configid WHERE jx_kpi_config_result.userid = ? AND jx_kpiconfig.tenantid = ?

Cause: java.sql.SQLException: No value specified for parameter 3

; bad SQL grammar []; nested exception is java.sql.SQLException: No value specified for parameter 3
at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:101)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:70)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:79)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:79)
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:91)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441) at com.sun.proxy.$Proxy88.selectOne(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:160)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:87)
at org.apache.ibatis.binding.MapperProxy$PlainMethodInvoker.invoke(MapperProxy.java:145) at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:86) at com.sun.proxy.$Proxy91.selectCountByQuery(Unknown Source)
at com.mybatisflex.core.BaseMapper.paginate(BaseMapper.java:478)
at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)
at org.apache.ibatis.binding.MapperProxy$DefaultMethodInvoker.invoke(MapperProxy.java:159) at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:86) at com.sun.proxy.$Proxy91.paginate(Unknown Source)
at com.mybatisflex.core.BaseMapper.paginate(BaseMapper.java:413)
at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)
at org.apache.ibatis.binding.MapperProxy$DefaultMethodInvoker.invoke(MapperProxy.java:159) at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:86) at com.sun.proxy.$Proxy91.paginate(Unknown Source)
... 88 common frames omitted
Caused by: java.sql.SQLException: No value specified for parameter 3
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:861)
at com.mysql.jdbc.PreparedStatement.checkAllParametersSet(PreparedStatement.java:2268)
at com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:2248)
at com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:2178)
at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1219)
at com.zaxxer.hikari.pool.ProxyPreparedStatement.execute(ProxyPreparedStatement.java:44)
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.execute(HikariProxyPreparedStatement.java)
at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:64)
at com.mybatisflex.core.mybatis.FlexStatementHandler.lambda$query$2(FlexStatementHandler.java:101) at com.mybatisflex.core.audit.AuditManager.startAudit(AuditManager.java:96) at com.mybatisflex.core.mybatis.FlexStatementHandler.query(FlexStatementHandler.java:101) at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:63) at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325) at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156) at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109) at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:89) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:151) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:145) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:76) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:427)
... 104 common frames omitted

评论 (0)

wangbo 创建了任务 2年前
wangbo 修改了标题 2年前
wangbo 修改了描述 2年前
Michael Yang 通过 mybatis-flex/mybatis-flex Commit 7444985任务状态待办的 修改为已完成 2年前
展开全部操作日志

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(1)
wangbo-wangbo_mail
1
https://gitee.com/mybatis-flex/mybatis-flex.git
git@gitee.com:mybatis-flex/mybatis-flex.git
mybatis-flex
mybatis-flex
MyBatis-Flex

搜索帮助