iBatis select 쿼리에 대한 ResultMap이 주어지면 ResultMap의 속성에 매핑 된 모든 열이 실제로 SQL 쿼리의 일부분 인 것처럼 보입니다.iBatis ResultMaps : 열 이름 <...>이 ResultSet에 없습니다.
특히 Resultmaps 내에 resultmaps가있을 때 ResultMaps를 다시 사용하려면 약간 짜증이납니다.
예 :이 내부 개체의 컬렉션을 보유 myPropName 및 someCollection을 들고 컨테이너 개체를로드하는 데 참여 사용하는 쿼리가있는 경우가 있기 때문에 물론
<resultMap id="myResultMap"
<result property="myPropName" column="myColumnName"/>
<result property="someCollection" resultMap="otherResultMap"/>
</resultMap>
<resultMap id="otherResultMap" groupBy="..."
<result property="otherPropName" column="otherColumnName"/>
</resultMap>
,이 두 가지 결과 맵이 정의되어있다.
그러나 myPropName을 사용하여 컨테이너 객체를로드하기 만하면되지만 someCollection에 내부 객체를로드 할 필요가없는 다른 select 쿼리에 동일한 결과 맵 정의를 다시 사용하려는 경우
열 이름 'otherColumnName이' 이 ResultSet
에서 찾을 수 없습니다가 null 또는 빈 콜렉션 각각의 속성 경우와 someCollection을 초기화 할 수없는 가능성이 없다 : 오류 메시지 수 (이 경우 otherPropName)은 pres가 아닙니다. SQL 쿼리에 있습니까?
해당 scencario에 대해 다른 결과 맵을 작성해야합니까? iBatis를 (하지 MyBatis로 아직) 버전 2.3.4을 사용하여
...
그래서 ResultSetMetaData를 사용하여 열 이름에 대해 문의하는 iBatis TypeHandler가 없습니까? –
네, 맞습니다. 올바른 방법은'ResultSetMetaData'를 사용하는 것입니다. 그러나 그것을하는 기존의'TypeHandler'를 모른다. – javanna