2013-08-25 4 views
3

매개 변수를 null로 설정하면 오류가 발생합니다.Mybatis 및 ojdbc14.jar를 사용하여 매개 변수에 대해 오류를 설정하는 중 오류가 발생했습니다.

이 문제점은 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> 

자바입니다

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

질문 :

는 ojdbc14.jar를의 문제이며, 만약 그렇다면, 왜?

# {elementName, jdbcType = VARCHAR2}을 (를) 사용하여 문제를 해결할 수 있음을 알고 있지만 프로젝트에이 문제가 너무 많아 조만간 마감 될 예정입니다. 나는 그들 모두를 바꾸고 싶지 않다.

답변

3

문제점 : 3.0.x 버전의 null 매개 변수에 대한 기본 JDBC 유형은 Oracle 10g과 같은 일부 JDBC 드라이버에서 지원하지 않는 Types.OTHER입니다.

Here이 문제를 설명하는 게시물

해결책은 매우 간단합니다. 구성 파일에서 jdbcTypeForNullNULL으로 설정했습니다.

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

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

    <mappers> 
    .... 
    </mappers> 
</configuration>