当前使用版本(必填,否则不予处理)
3.4.0
该问题是如何引起的?(确定最新版也有问题再提!!!)
字段开启了自动填充功能 fill = FieldFill.INSERT_UPDATE , 当该字段值为null的时候 , sql里面依然会生成该字段 , 导致执行报错.
重现步骤(如果有就写完整)
我自己实现了 , MetaObjectHandler接口 , 然后spellCode(拼音码) 字段是根据 userName字段去算的. 当我调用 updateById , 如果只想更新单个字段 userTel 的话 , 那么此时spellCode 字段就是 null , 但是更新的sql语句还是会把该字段放进去 , 导致报错 , 我调试了下 , 发现这个语句是在MetaObjectHandler就已经生成好了
是否有其他的办法实现针对自动填充的字段 , 当值为空的时候 , 就不做填充的功能
报错信息
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='et.spellCode', mode=IN, javaType=class java.lang.Object, jdbcType=null, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}. Cause: org.apache.ibatis.type.TypeException: Error setting null for parameter #4 with JdbcType OTHER . Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property. Cause: java.sql.SQLException: 无效的列类型: 1111 at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:92) at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:440) at com.sun.proxy.$Proxy88.update(Unknown Source)
Comment From: miemieYaho
没有