I have a fix for that problem! The order of the sqlMap element includes in the sqlMapConfig.xml is important. If you want to use a resultMap in the namespace DATA_SEGMENT from the namespace GRANULE you have to first declare the sqlmap1 (which declares namespace GRANULE) and after then the sqlmap2 (which declared namespace DATA_SEGMENT). example:
<sqlMapConfig> <properties resource="database.properties"/> <settings enhancementEnabled="true" useStatementNamespaces="true"/> <sqlMap resource="com/foo/sqlmap1.xml" /> <sqlMap resource="com/foo/sqlmap2.xml" /> </sqlMapConfig> JIRA ibatis-...@incubator.apache.org wrote: > > > [ > https://issues.apache.org/jira/browse/IBATISNET-45?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12683674#action_12683674 > ] > > Russ Baker commented on IBATISNET-45: > ------------------------------------- > > I'm seeing this issue again with Ibatis for Java. I'm using > ibatis-sqlmap-2.3.4.726.jar. It works for some sql maps, but not for > others. I haven't been able to track down why one works and the other > doesn't. Here is an example: > > sqlMapConfig: > <sqlMapConfig> > <properties resource="database.properties"/> > <settings enhancementEnabled="true" useStatementNamespaces="true"/> > ... > > SqlMap 1: > <?xml version="1.0" encoding="UTF-8" ?> > <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" > "http://ibatis.apache.org/dtd/sql-map-2.dtd" > > <sqlMap namespace="GRANULE" > > <typeAlias alias="granule" type="gov.noaa.eds.ri.api.dto.GranuleDTO" /> > <resultMap id="granuleResult" class="gov.noaa.eds.ri.api.dto.GranuleDTO" > > > <!-- > WARNING - This element is automatically generated by Abator for > iBATIS, do not modify. > This element was generated on Thu Oct 30 13:02:24 MDT 2008. > --> > <result column="ID" property="id" jdbcType="DECIMAL" /> > <result column="START_DATE" property="start_date" jdbcType="TIMESTAMP" > /> > <result column="END_DATE" property="end_date" jdbcType="TIMESTAMP" /> > <result column="DESCRIPTION" property="description" jdbcType="VARCHAR" > /> > <result column="GRANULE_TYPE_ID" property="granuleTypeId" > jdbcType="DECIMAL" /> > <result column="LAST_UPDATE_DATE" property="lastUpdateDate" > jdbcType="DATE" /> > <result column="LAST_UPDATED_BY_USER" property="lastUpdateByUser" > jdbcType="VARCHAR" /> > </resultMap> > > sqlMap2 which uses result map from sqlMap 1 > <?xml version="1.0" encoding="UTF-8" ?> > <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" > "http://ibatis.apache.org/dtd/sql-map-2.dtd" > > <sqlMap namespace="DATA_SEGMENT" > > <select id="findGranuleByDataSegment" parameterClass="java.lang.Long" > resultMap="GRANULE.granuleResult"> > > I get the following error: > > Caused by: java.lang.RuntimeException: Error parsing XPath > '/sqlMapConfig/sqlMap'. Cause: com.ibatis.common.xml.NodeletException: > Error parsing XML. Cause: java.lang.RuntimeException: Error parsing XPath > '/sqlMap/select'. Cause: com.ibatis.sqlmap.client.SqlMapException: There > is no result map named GRANULE.granuleResult in this SqlMap. > > Is this a regression, or do I not have things configured conrrectly? > >> Unable to reference result maps defined in other xml files when >> useStatementNamespaces is set to true >> ----------------------------------------------------------------------------------------------------- >> >> Key: IBATISNET-45 >> URL: https://issues.apache.org/jira/browse/IBATISNET-45 >> Project: iBatis for .NET >> Issue Type: Bug >> Environment: DataMapper: 1.1.458.0 >> Reporter: Ron Grabowski >> Assignee: Gilles Bayon >> Priority: Minor >> Fix For: DataMapper 1.2.0 >> >> >> If I try to access a result map in a different namespace using this >> syntax: >> <sqlMap namespace="XYZ" ...> >> <statements> >> <select id="GetMany" resultMap="ABC.FooResult" parameterClass="map"> >> I get an exception complaining that resultMap XYZ.ABC.FooResult is not >> defined. ABC.FooResult is defined in a seperate xml file. In my >> SqlMap.config file, the xml file containing ABC.FooResult appears before >> the XYZ resultmap file: >> <sqlMaps> >> <sqlMap resource="ABC.xml" /> >> <sqlMap resource="XYZ.xml" /> >> </sqlMaps> >> Java people in the #ibatis chatroom (Brandon and Larry) said that to >> reference a external result map, you needed to do so before the id tag: >> <sqlMap namespace="XYZ" ...> >> <statements> >> <select resultMap="ABC.FooResult" id="GetMany" parameterClass="map"> >> That didn't work in IBatisNet. >> I also tried creating a local resultmap that extended an external >> resultmap: >> <sqlMap namespace="XYZ" ...> >> <resultMaps> >> <resultMap id="FooResult" extends="ABC.FooResult" /> >> </resultMaps> >> <statements> >> <select id="GetMany" resultMap="FooResult" parameterClass="map"> >> I received an exception saying something about ABC.FooResult not being >> found. > > -- > This message is automatically generated by JIRA. > - > You can reply to this email to add a comment to the issue online. > > > -- View this message in context: http://old.nabble.com/-jira--Commented%3A-%28IBATISNET-45%29-Unable-to-reference-result-maps-defined-in-other-xml-files-when-useStatementNamespaces-is-set-to-true-tp22611388p28458838.html Sent from the iBATIS - Dev mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@ibatis.apache.org For additional commands, e-mail: dev-h...@ibatis.apache.org