凤凰山笔记

解决ibatis或者mybatis错误类型:Unrecognized JDBC type: 1111. ERRORCODE=-4228, SQLSTATE=null

昨天与项目同事调程序,发现报一下错误,好是郁闷.

org.apache.ibatis.exceptions.PersistenceException:

Error updating database. Cause: org.apache.ibatis.type.TypeException: Error setting null for parameter #22 with JdbcType OTHER . Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property. Cause: com.ibm.db2.jcc.am.SqlException: [jcc][10271][10295][3.57.82] Unrecognized JDBC type: 1111. ERRORCODE=-4228, SQLSTATE=null

…………….
错误直接定向到对应的insert或者update的sqlmap.xml文件


<![CDATA[
INSERT INTO
CRM_CHANGE_REQUEST
(
REQ_ID,
CUST_ID,
CHANGE_TYPE,
CHANGE_TYPE_NAME,
CHANGE_FRM,
CHANGE_TO,
CHANGE_REASON,
CRT_USER_ID,
CRT_USER_NAME,
CRT_DATE,
PROCESS_ID,
ACTIVITY_ID,
AUDIT_DATE,
CHG_KIND
)
VALUES
(

    #{REQ_ID},
    #{CUST_ID},
    #{CHANGE_TYPE},
    #{CHANGE_TYPE_NAME},
    #{CHANGE_FRM},
    #{CHANGE_TO},
    #{CHANGE_REASON},
    #{CRT_USER_ID},
    #{CRT_USER_NAME},
    #{CRT_DATE},
    #{PROCESS_ID},
    #{ACTIVITY_ID},
    #{AUDIT_DATE},
    #{CHG_KIND}
)
    ]]>
</insert>


经过一番谷歌发现是如果null值得话,mybatis或者ibatis中要指定jdbctype,否则就会报错,主要原因是batis无法进行类型转换
其实经过试验,batis会默认对象为string对象,所以varchar的可以不指定jdbctype也不会报错,如果是数字或者日期类型如果可能为null值得话就必须进行转换

以上文件简单修改一下就可以不报错了,即指定jdbctype


        
    
cloudroc wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
很惭愧,只做了些微小的工作,您的支持将鼓励我继续努力创作!