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