ibatis-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ian Zabel (JIRA)" <ibatis-...@incubator.apache.org>
Subject [jira] Commented: (IBATIS-375) Provide a way for not creating items from nested ResultMaps when the items contain only null values
Date Thu, 17 Jul 2008 17:01:31 GMT

    [ https://issues.apache.org/jira/browse/IBATIS-375?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12614436#action_12614436

Ian Zabel commented on IBATIS-375:

I'm surprised this improvement hasn't been implemented yet. This is definitely a great feature
to have. Odd that it's in the .NET version, but not in Java.

> 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
>         Attachments: BasicResultMap.java, BasicResultMapping.java, 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.

View raw message