You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ibatis.apache.org by "Ian Zabel (JIRA)" <ib...@incubator.apache.org> on 2008/07/17 19:01:31 UTC
[jira] Commented: (IBATIS-375) Provide a way for not creating items
from nested ResultMaps when the items contain only null values
[ 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.