ibatis-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Stefan Langer (JIRA)" <ibatis-...@incubator.apache.org>
Subject [jira] Created: (IBATIS-375) Provide a way for not creating items from nested ResultMaps when the items contain only null values
Date Fri, 01 Dec 2006 08:46:20 GMT
Provide a way for not creating items from nested ResultMaps when the items contain only null
values
---------------------------------------------------------------------------------------------------

                 Key: IBATIS-375
                 URL: http://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


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.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message