iBatis 완전 초짜입니다. 처음 보는 상황인데도 sample 소스를 보고 있습니다 ^^
그러니 오류가 발생하면 무지 헤매고 있습니다^^
다음의 오류가 발생해서 한참 걸렸습니다.
...
Caused by: java.lang.RuntimeException: Error parsing XPath '/sqlMap/select'. Cause: com.ibatis.sqlmap.client.SqlMapException: There is no result map named content in this SqlMap.
at com.ibatis.common.xml.NodeletParser.processNodelet(NodeletParser.java:123)
at com.ibatis.common.xml.NodeletParser.process(NodeletParser.java:84)
at com.ibatis.common.xml.NodeletParser.process(NodeletParser.java:102)
at com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:72)
at com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:60)
...
위의 내용만을 가지고 인터넷에서 한참 찾았더니 참으로 여러 종류의 글이 많았습니다. 한참 헤매다가 결국 중요한 오류 내용은 다음 내용이었습니다.
... 42 more
Caused by: com.ibatis.sqlmap.client.SqlMapException: There is no result map named content in this SqlMap.
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.getResultMap(SqlMapExecutorDelegate.java:357)
at com.ibatis.sqlmap.engine.builder.xml.SqlStatementParser.parseGeneralStatement(SqlStatementParser.java:72)
at com.ibatis.sqlmap.engine.builder.xml.SqlMapParser$22.process(SqlMapParser.java:581)
at com.ibatis.common.xml.NodeletParser.processNodelet(NodeletParser.java:121)
... 46 more
'content'라는 result Map이 존재하자 않는다는 내용입니다.
sqlMapConfig.xml의 내용은 다음과 같습니다.
<sqlMapConfig>
<settings useStatementNamespaces="true"/>
<typeAlias alias="content" type="com.otamot.domain.Content"/>
<sqlMap resource="com/otamot/dao/model/Content_SqlMap.xml"/>
</sqlMapConfig>
Content_SqlMap.xml의 내용은 다음과 같습니다.
<sqlMap>
<select id="getContent" parameterClass="int" resultMap="content">
<![CDATA[
SELECT SQL_ID, CREATED_DATE, TITLE, CONTENT,CONTENT_TYPE
FROM CONTENT
WHERE SQL_ID=#id#
]]>
</select>
</sqlMap>
위의 내용에서 다음이 문제였습니다.
<select id="getContent" parameterClass="int"
resultMap="content">
이 경우에는 resultMap이 아니라
resultClass로 해야 옳습니다.
그렇게 변경하고 나니 오류가 없었습니다. iBatis가 초짜한테 와서 무지 고생하고 있습니다. ^^