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 [email protected] 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: [email protected]
For additional commands, e-mail: [email protected]