You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ibatis.apache.org by "Emilio Gutiérrez León (JIRA)" <ib...@incubator.apache.org> on 2009/05/08 13:33:45 UTC

[jira] Created: (IBATIS-597) Use same resultmap in a result

Use same resultmap in a result
------------------------------

                 Key: IBATIS-597
                 URL: https://issues.apache.org/jira/browse/IBATIS-597
             Project: iBatis for Java
          Issue Type: Wish
          Components: SQL Maps
         Environment: Not significant 
            Reporter: Emilio Gutiérrez León


Hello.

My question is about use of the one resultmap more than once in a result. Sample :

<resultMap id="personMapping" class="Person">
   ...
   <result property="name" column="NAME" />
   <result property="personalAdress" resultMap="AdressMapping />
   <result property="jobAdress"            resultMap="AdressMapping />
</resultMap>

<resultMap id="AdressMapping " class="Adress">
  ...
  <result property="street" column="STREET" />
  <result property="number" column="number" />
</resultMap>

<select id="person_find" parameterClass="Person" resultMap="personMapping">
		SELECT *
		    FROM PERSON, ADRESS personal, ADRESS job
                    WHERE PERSON_PERSONAL_ADDRESS_ID = personal.ADDRESS_ID 
                           AND PERSON_JOB_ADDRESS_ID = job.ADDRESS_ID
                           AND PERSON_ID = #id#
</select>	

<select id="adress_find" parameterClass="Adress" resultMap="adressMapping">
		SELECT *
		    FROM ADRESS 
                <dynamic prepend="where">
			<isNotNull property="id" prepend=" and ">ADRESS_ID = #id#</isNotNull>
		</dynamic>
</select>	

When i use the select  'person_find', the result is composed by the data of the person, data of his personal adress and data of his job adress. When i see the result of the query in my person object, the personal adress and the job adress is the same because Ibatis can´t identify two mappings of the same table.

In this sample, the 'adress_find' take one adress if 'id' is completed or all adresses if 'id' is null. This is necesary in my application.

How can resolve this without duplicate 'address_find' ?

Thanks

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Closed: (IBATIS-597) Use same resultmap in a result

Posted by "Kai Grabfelder (JIRA)" <ib...@incubator.apache.org>.
     [ https://issues.apache.org/jira/browse/IBATIS-597?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Kai Grabfelder closed IBATIS-597.
---------------------------------

    Resolution: Invalid

please ask questions like this on the user mailing list. The answer to your question is that you have to duplicate the adress mapping, there is no other way to do that in iBATIS.

> Use same resultmap in a result
> ------------------------------
>
>                 Key: IBATIS-597
>                 URL: https://issues.apache.org/jira/browse/IBATIS-597
>             Project: iBatis for Java
>          Issue Type: Wish
>          Components: SQL Maps
>         Environment: Not significant 
>            Reporter: Emilio Gutiérrez León
>
> Hello.
> My question is about use of the one resultmap more than once in a result. Sample :
> <resultMap id="personMapping" class="Person">
>    ...
>    <result property="name" column="NAME" />
>    <result property="personalAdress" resultMap="AdressMapping />
>    <result property="jobAdress"            resultMap="AdressMapping />
> </resultMap>
> <resultMap id="AdressMapping " class="Adress">
>   ...
>   <result property="street" column="STREET" />
>   <result property="number" column="number" />
> </resultMap>
> <select id="person_find" parameterClass="Person" resultMap="personMapping">
>                 SELECT *
>                      FROM PERSON, ADRESS personal, ADRESS job
>                   WHERE PERSON_PERSONAL_ADDRESS_ID = personal.ADDRESS_ID 
>                          AND PERSON_JOB_ADDRESS_ID = job.ADDRESS_ID
>                          AND PERSON_ID = #id#
> </select>	
> <select id="adress_find" parameterClass="Adress" resultMap="adressMapping">
>                SELECT *
>                    FROM ADRESS 
>                   <dynamic prepend="where">
>                       <isNotNull property="id" prepend=" and ">ADRESS_ID = #id#</isNotNull>
>                   </dynamic>
> </select>	
> When i use the select  'person_find', the result is composed by the data of the person, data of his personal adress and data of his job adress. When i see the result of the query in my person object, the personal adress and the job adress is the same because Ibatis can´t identify two mappings of the same table.
> In this sample, the 'adress_find' take one adress if 'id' is completed or all adresses if 'id' is null. This is necesary in my application.
> How can resolve this without duplicate 'address_find' ?
> Thanks

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.