@Liuzh_533 你好,想跟你请教个问题:我最近在升级通用mapper和分页插件时,使用selectByPrimaryKey时报错:
message:nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='createTime', mode=IN, javaType=class java.util.Date, jdbcType=null, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}. Cause: org.apache.ibatis.type.TypeException: Error setting non null for parameter #1 with JdbcType null . Try setting a different JdbcType for this parameter or a different configuration property. Cause: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.util.Date
我经过调试和查看日志发现sql中的条件是实体类的所有字段:
SELECT Preparing: SELECT create_time,update_time,description,id,real_name,nick_name,english_name,username,password,address,age,sex FROM rejoice_user WHERE create_time = ? AND update_time = ? AND description = ? AND id = ? AND real_name = ? AND nick_name = ? AND english_name = ? AND username = ? AND password = ? AND address = ? AND age = ? AND sex = ?
[2017-06-21 10:14:52,415][http-nio-8081-exec-1][ERROR][com.rejoice.active.console.handler.GlobalDefaultExceptionHandler:34] 出错了:nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='createTime', mode=IN, javaType=class java.util.Date, jdbcType=null, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}. Cause: org.apache.ibatis.type.TypeException: Error setting non null for parameter #1 with JdbcType null . Try setting a different JdbcType for this parameter or a different configuration property. Cause: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.util.Date
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='createTime', mode=IN, javaType=class java.util.Date, jdbcType=null, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}. Cause: org.apache.ibatis.type.TypeException: Error setting non null for parameter #1 with JdbcType null . Try setting a different JdbcType for this parameter or a different configuration property. Cause: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.util.Date
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:77) ~[mybatis-spring-1.3.1.jar:1.3.1]
但是我的实体是有加@Id的
我的配置集成配置:
我使用的版本:
代码使用:
spring框架是spring boot,但是采用传统方式ImportResource把xml引进来
请问错误产生的原因是什么呢?
查询所有是好的
另外我用spring boot的starter集成的时候也有问题:通用mapper不能自动判断主键id的类型:
Preparing: SELECT create_time,update_time,description,id,real_name,nick_name,english_name,username,password,address,age,sex FROM rejoice_user WHERE id = ?
[2017-06-21 10:12:11,155][http-nio-8081-exec-5][ERROR][com.rejoice.active.console.handler.GlobalDefaultExceptionHandler:34] 出错了:nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='id', mode=IN, javaType=class java.lang.Integer, jdbcType=null, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}. Cause: org.apache.ibatis.type.TypeException: Error setting non null for parameter #1 with JdbcType null . Try setting a different JdbcType for this parameter or a different configuration property. Cause: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
这个问题又是怎么产生的呢,根据id删除也是同样情况,查询所有和分页是没问题的
BaseEntity中是否有id?
和主键有关的方法中,需要自己保证参数和实体类中的类型一致。
baseEntity没有id,BaseService中的queryById的的形参Serializable来接收,我升级到3.4后,starter集成的传递的实参跟实体中定义的主键的类型必须一致,而传统的xml配置方式,则出现所有字段当成主键的情况,哪怕是类型跟实体中一致也是一样,有个想法:目前是不支持根据实体类中的主键类型来动态设置参数类型吗,2.0版本支持不(好像版本更新日志有提到主键泛型)版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。