[ 
https://issues.apache.org/jira/browse/IBATIS-375?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Clinton Begin closed IBATIS-375.
--------------------------------

       Resolution: Fixed
    Fix Version/s: 2.3.4

applied patch

> Provide a way for not creating items from nested ResultMaps when the items 
> contain only null values
> ---------------------------------------------------------------------------------------------------
>
>                 Key: IBATIS-375
>                 URL: https://issues.apache.org/jira/browse/IBATIS-375
>             Project: iBatis for Java
>          Issue Type: Improvement
>          Components: SQL Maps
>    Affects Versions: 2.2.0
>            Reporter: Stefan Langer
>             Fix For: 2.3.4
>
>         Attachments: BasicResultMap.java, BasicResultMapping.java, 
> iBATIS-375.patch, sql-map-2.dtd, SqlMapParser.java
>
>
> Taken the following resultmaps (uneeded parts are left out) for a simple 
> domainmodel where notebook contains 0 or more pages.
> <resultMap class="notebook" groupBy="id" id="notebookResult">
>    <result column="NB_ID" jdbcType="VARCHAR" property="id"/>
>    <result javaType="java.util.List" property="pages" 
> resultMap="Note.pageResult"/>
> </resultMap>
> <resultMap class="page" groupBy="id" id="pageResult">
>   <result column="P_ID" jdbcType="VARCHAR" property="id"/>
> </resultMap> 
> and the following select statement:
> <select id="selectNotebook" parameterClass="java.lang.String" 
> resultMap="notebookResult">
> SELECT nb.id as nb_id, p.id as p_id,    
> FROM notebook nb LEFT JOIN page p ON nb.id = p.notebook_id
> WHERE nb.id = #id#
> </select> 
> Do to the left join this query will always result in at least one page being 
> created even though the pages are actually empty. 
> It would be nice if the mapping framework could somehow not create these 
> empty objects. 
> The following suggestions come to mind: 
> Either do not create objects where all parameters are null (this indicates 
> the left or right join scenario)
> or provide a way to tag a property in the resultMap which may not be null in 
> order for the object to be created.
> Example:
> <resultMap class="page" groupBy="id" id="pageResult">
>   <result column="P_ID" jdbcType="VARCHAR" property="id" 
> doNotCreateOnNull="true"/>
> </resultMap> 
> This would greatly ease the use of complex mappings where one wants to 
> prevent the dreaded N+1 Select Problem.

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

Reply via email to