Ошибка установки значения null для параметра с Mybatis и ojdbc14.jar

У меня ошибка при установке параметра как null.

Эта проблема возникает ТОЛЬКО при использовании ojdbc14.jar. При использовании ojdbc6.jar все в порядке.

У меня есть этот параметр в конфигурации mybatis xml

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

Сообщение об ошибке:

Caused by: org.apache.ibatis.type.TypeException: Error setting null for parameter #1 with JdbcType NULL . Try setting a different JdbcType for this parameter or a different jdbcTypeForNull

SQL в xml есть

<update id="rename" parameterType="Element">
    update dsb_element t set t.elementname = #{elementName} where t.elementid = #{elementId}
</update>

Java вызывает это

 com.my.Element ele = new Element();
    ele.setElementId("some-id");
    ele.setElementName(null);
    sqlSession.update(getMyBatisId("rename"), element) ;

Вопрос в том:

Является ли это проблемой ojdbc14.jar, и если да, то почему?

Я знаю, что могу решить эту проблему, используя #{elementName, jdbcType=VARCHAR2}, но в моем проекте повсюду много этой проблемы, и она скоро должна появиться. Я не хочу менять их всех.


person GaryX    schedule 25.08.2013    source источник


Ответы (1)


Проблема в том, что, начиная с версии 3.0.x, тип JDBC по умолчанию для пустых параметров — Types.OTHER, который не поддерживается некоторыми драйверами JDBC, такими как Oracle 10g.

здесь сообщение, объясняющее эту проблему.

Решение, которое я нашел, очень простое, я установил jdbcTypeForNull в NULL в файле конфигурации.

<configuration>
    <properties resource="mybatis-config.properties" />
    <settings>
        <setting name="jdbcTypeForNull" value="NULL" />
    </settings>

    <environments default="development">
    ....
    </environments>

    <mappers>
    ....
   </mappers>
</configuration>
person Mouna    schedule 26.05.2014
comment
Это помогло! Большое спасибо - person user2105282; 14.09.2018