4

パラメータを 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

xmlのSQLは

<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} を使用して解決できることはわかっていますが、私のプロジェクトにはこの問題がたくさんあり、間もなく期限が切れます。それらすべてを変更したくありません。

4

1 に答える 1

5

問題は、3.0.x バージョン以降、null パラメータのデフォルトの JDBC タイプが、Oracle 10gTypes.OTHERなどの一部の JDBC ドライバでサポートされていないことです。

ここに、この問題を説明する投稿があります。

私が見つけた解決策は非常に簡単で、構成ファイルに設定jdbcTypeForNullしました。NULL

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

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

    <mappers>
    ....
   </mappers>
</configuration>
于 2014-05-26T14:27:17.573 に答える