로컬 윈도우 환경에서는 잘 돌아가는 녀석이, 서버(리눅스) 에만 올리면 "There is no result map named" 에러가 발생한다.
구글신에게 물어봐도 답을 찾지 못했다. 결국 금요일 퇴근도 못하고 삽질 3시간 후 해결 .... ㅠㅠ
AAAA-sqlmap.xml
<sqlMap namespace="_AAAA">
....
<resultMap id="myMapId" class="XXXX">
....
</resultMap>
....
</sqlMap>
BBBB-sqlmap.xml
<sqlMap namespace="_BBBB">
....
<select id="list" resultMap="_AAAA.myMapId" parameterClass="XXXX">
....
</select>
....
</sqlMap>
이렇게 사용해야 될 경우에는 sqlmap 파일의 로딩순서에 유의해야 한다.
sqlmap-config.xml 파일에 수동으로 기능별 sqlmap 파일을 선언해 줄 경우에는 아래와 같이 AAAA-sqlmap.xml을 먼저 선언해줘야 한다.
<sqlMapConfig>
....
<settings enhancementEnabled="true" useStatementNamespaces="true"/>
<sqlMap resource="com/foo/AAAA-sqlmap.xml" />
<sqlMap resource="com/foo/BBBB-sqlmap.xml" />
....
</sqlMapConfig>
만약 스프링과 연동하여 sqlmap 파일을 자동으로 로딩해서 사용하고 있을 경우에는 아래와 같이 해주도록 한다.
<bean id="sqlMapClient"
class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
....
<property name="mappingLocations">
<list>
<value>classpath*:/com/foo/AAAA-sqlmap.xml</value>
<value>classpath*:/com/foo/BBBB-sqlmap.xml</value>
<value>classpath*:/com/others/
**/*-sqlmap.xml</value>
</list>
</property>
....
</bean>