SELECT statement returns unexpected result when 'groupBy' and 'nullValue' are 
specified in resultMaps.
------------------------------------------------------------------------------------------------------

         Key: IBATIS-213
         URL: http://issues.apache.org/jira/browse/IBATIS-213
     Project: iBatis for Java
        Type: Bug
  Components: SQL Maps  
    Versions: 2.1.5    
 Environment: PowerMac G5 1.8GHz dual, 2.25GB RAM, Mac OS X 10.4.2
Using SqlMaps from tomcat via spring framework.
    Reporter: Iwao AVE!


[Preparation]
-- Database
CREATE TABLE parent ( parentId, parentName );
CREATE TABLE child ( childId, parentId, childName, childAge );
INSERT INTO parent ( parentId, parentName ) VALUES ( 1, 'Mr Parent' );

-- Java classes.
public class Parent
{
   private int parentId;
   private String parentName;
   private List childList;
   // accessor methods...
}

public class Child
{
   private int childId;
   private String childName;
   private int childAge;
   // accessor methods...
}

--SqlMap.
<sqlMap namespace="Family">
   <resultMap id="parentResult" class="Parent" groupBy="parentId">
      <result property="parentId" column="parentId"/>
      <result property="parentName" column="parentName"/>
     <result property="childList" resultMap="Family.childResult"/>
   </resultMap>
   <resultMap id="childResult" class="Child">
      <result property="childId" column="childId"/>
      <result property="childName" column="childName"/>
      <result property="childAge" column="childAge" nullValue="0"/>
   </resultMap>
   <select id="getParent" resultMap="parentResult" parameterClass="int">
      SELECT
         parent.parentId, parent.parentName,
         child.childId, child.childName, child.childAge
      FROM parent
         LEFT JOIN child ON parent.parentId = child.parentId
      WHERE
         parent.parentId = #value#
   </select>
</sqlMap>

--
[Test]
Executing statement "getParent" with parameter '1'.

[Expected result]
Query returns 1 'Parent' object and 'childList' property of it is empty 
(doesn't mean null).

[Actual result]
The 'childList' property of the returned 'Parent' contains 1 'Child' object.

[Additional information]
If 'nullValue' is not specified in 'childResult', it works as expected.
But this, of course, causes an error if there is a row in the 'child' table and 
the 'childAge' column is null.

-- 
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

Reply via email to