2012-08-16 2 views
0

iBatis를 사용하여 수행 한 Oracle 프로 시저 호출이 있습니다. 프로 시저의 IN 매개 변수 중 하나는 프로 시저의 VARCHAR2 데이터 유형이고 Service/DAO 레이어의 java.lang.String입니다.
iBatis를 사용하는 프로 시저에 NULL 값을 전달하는 중 오류가 발생했습니다.

이 입력 매개 변수가 NULL 값과 함께 전달 될 때마다 프로 시저가 실패합니다. 값이 전달되면 프로 시저가 오류없이 호출됩니다.

parametermap 내의이 프로 시저 매개 변수 (nullable)는 jdbctype="java.sql.Types.NULL"으로 설정되어 작업을 시작합니다.

올바른 해결책입니까?

데이터베이스 연결은 Tomcat6 서버에서 생성 된 연결 풀 (dbcp)을 사용하여 설정됩니다.

답변

0

Ibatis는 매개 변수로 전달 된 NULL 값에 문제가 있음을 확인했습니다. 아직 (내 경우에는 2.3) iBATIS를의 이전 버전을 사용하는 사람들을 위해

insert into table (column1) values (<isNull property="column1">NULL </isNull><isNotNull property="column1">#column1:INT# </isNotNull>) 
+0

인라인 매개 변수 매핑에 사용됩니다. 그러나 매개 변수 태그를 통해 매핑이 수행되는 경우 어떻게 관리합니까? – yathirigan

+0

"매개 변수 태그"란 무엇입니까? 위의 예에서 "column1"은 parameterClass 태그에 정의 된 클래스의 속성입니다. 예를 들어 또는 마지막으로 매개 변수로지도를 채우고이지도를 ibatis에 전달합니다. – Olesia

+0

매개 변수 태그에 의해 나는 다음과 같은 의미! <- - 저장 프로 시저를 호출합니다. -> <프로 시저 ID = "getEmpInfo"resultClass를 = "직원" 된 parameterMap = "getEmpInfoCall"> {전화 getEmp (# acctID #)} <된 parameterMap ID = "getEmpInfoCall"클래스 => "지도" yathirigan

0

, 널 (NULL) 매개 변수를 전달하는 것은 된 parameterMap에 jdbcType을 지정하지 않음으로써 발생할 수 있습니다 동안 위의 오류 : 우리의 삽입 쿼리에서 우리는 래퍼를 사용합니다. iBatis 2.3.0 User Guide (p.27, 매개 변수 맵 및 인라인 매개 변수 - jdbcType)에이 부분이 나와 있습니다.