org.apache.ibatis.type.TypeException:无法设置映射参数:ParameterMapping

问题描述 投票:0回答:1

我在Spring Boot 2.0中的mybatis中有一个日期比较错误,我没有想法。

我的Mapper看起来像这样(使用MySql):

@Select("select count(s.id,r.date) from eshrsys.score s join eshrsys.round on (s.round_id = r.id) where r.date > '#{date,jdbcType=DATE}'")
Integer getScoreCountFromDate(Date date);

我传入一个非空的有效java.sql.date对象。但我得到这个错误引用日期比较:

2018-09-02 21:14:23.999 ERROR 5644 --- [nio-8088-exec-2] oaccC [。[。[/]。[dispatcherServlet]:servlet [dispatcherServlet]的Servlet.service()与上下文path []引发异常[请求处理失败;嵌套异常是org.mybatis.spring.MyBatisSystemException:嵌套异常是org.apache.ibatis.type.TypeException:无法设置映射参数:ParameterMapping {property ='date',mode = IN,javaType = class java.sql。 Date,jdbcType = DATE,numericScale = null,resultMapId ='null',jdbcTypeName ='null',expression ='null'}。原因:org.apache.ibatis.type.TypeException:使用JdbcType DATE为参数#1设置非null时出错。尝试为此参数或其他配置属性设置不同的JdbcType。原因:java.sql.SQLException:参数索引超出范围(1>参数个数,即0)。

我尝试了许多不同的解决方法,从将输入转换为字符串,然后再将其发送到删除单引号,再播放jdbcType。没有任何效果。

mysql spring-boot ibatis
1个回答
0
投票

我终于想到了这一点,结果证明是一个与我怀疑的完全不同的问题。上述错误的简单修复是删除'#{date,jdbcType = DATE}'周围的单引号。

我最初这样做了但是得到了一个MySQL语法错误'靠近r.date',我认为这与我的日期比较有关,但事实并非如此!它在我的'count(s.id,r.date)'声明中开始抱怨r.date。用'count(*)'替换它来固定它。我没有受阻。

© www.soinside.com 2019 - 2024. All rights reserved.