MyBatis将null插入DB2 DATE列

时间:2017-02-08 19:28:20

标签: db2 mybatis

使用MyBatis(版本3.2.5)我正在尝试使用NULL更新DB2 DATE列,但是将此值设置为以下错误

org.springframework.jdbc.UncategorizedSQLException: Error setting null for parameter #5 with JdbcType NULL . Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property. Cause: com.ibm.db2.jcc.c.SqlException: [ibm][db2][jcc][10281][10295] JDBC type 0 is not yet supported.
; uncategorized SQLException for SQL []; SQL state [null]; error code [-99999]; [ibm][db2][jcc][10281][10295] JDBC type 0 is not yet supported.; nested exception is com.ibm.db2.jcc.c.SqlException: [ibm][db2][jcc][10281][10295] JDBC type 0 is not yet supported.

我尝试了以下建议,但它们不适合我

MyBatis - jdbcTypeForNull Oracle

2 个答案:

答案 0 :(得分:1)

line 39 of BaseTypeHandler抛出异常。

设置断点以检查jdbcType.TYPE_CODE的当前值。当它等于java.sql.Types.TIMESTAMP(93)时它应该可以正常工作,可能不是这种情况。

所以如果不是这样, this的预期实际类型为DateTypeHandler。 然后,您可能必须定义自己的 DateTypeHandler ,只需扩展它并从 BaseTypeHandler 覆盖方法setParameter,实际上只需用forced {替换变量jdbcType.TYPE_CODE {1}}。 要在所有Date参数的默认情况下使用它,请在mybatis-config.xml(或Spring)的typeHandler部分中注册它。否则,在insert语句中为相关参数设置typeHandler属性。

答案 1 :(得分:0)

找到解决方案..

在mybatis-config.xml中,我有

<setting name="jdbcTypeForNull" value="NULL" />

我改变了它,如下所示。

<configuration>
    <settings>
        <setting name="jdbcTypeForNull" value="DATE" />             
    </settings>    
</configuration>