Author: cbegin Date: Fri Jun 24 21:20:29 2005 New Revision: 201714 URL: http://svn.apache.org/viewcvs?rev=201714&view=rev Log: IBATIS-136
Fixed. Extended result maps now carry forward the groupBy attribute, and also allow it to be overridden. Modified: ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlMapParser.java ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/result/BasicResultMap.java ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/RepeatingGroupMappingTest.java ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/maps/RepeatingGroupMapping.xml Modified: ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlMapParser.java URL: http://svn.apache.org/viewcvs/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlMapParser.java?rev=201714&r1=201713&r2=201714&view=diff ============================================================================== --- ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlMapParser.java (original) +++ ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/builder/xml/SqlMapParser.java Fri Jun 24 21:20:29 2005 @@ -343,6 +343,14 @@ for (int i = 0; i < resultMappings.length; i++) { vars.resultMappingList.add(resultMappings[i]); } + if (groupBy == null || groupBy.length() == 0) { + if (extendedResultMap.hasGroupBy()) { + Iterator i = extendedResultMap.groupByProps(); + while (i.hasNext()) { + vars.currentResultMap.addGroupByProperty((String) i.next()); + } + } + } } vars.errorCtx.setMoreInfo("Check the result mappings."); Modified: ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/result/BasicResultMap.java URL: http://svn.apache.org/viewcvs/ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/result/BasicResultMap.java?rev=201714&r1=201713&r2=201714&view=diff ============================================================================== --- ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/result/BasicResultMap.java (original) +++ ibatis/trunk/java/mapper/mapper2/src/com/ibatis/sqlmap/engine/mapping/result/BasicResultMap.java Fri Jun 24 21:20:29 2005 @@ -196,6 +196,14 @@ groupByProps.add(name); } + public boolean hasGroupBy() { + return groupByProps != null && groupByProps.size() > 0; + } + + public Iterator groupByProps() { + return groupByProps.iterator(); + } + public void addNestedResultMappings(ResultMapping mapping) { if (nestedResultMappings == null) { nestedResultMappings = new ArrayList(); Modified: ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/RepeatingGroupMappingTest.java URL: http://svn.apache.org/viewcvs/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/RepeatingGroupMappingTest.java?rev=201714&r1=201713&r2=201714&view=diff ============================================================================== --- ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/RepeatingGroupMappingTest.java (original) +++ ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/RepeatingGroupMappingTest.java Fri Jun 24 21:20:29 2005 @@ -17,6 +17,11 @@ assertEquals (5, list.size()); } + public void testGroupByExtended() throws Exception { + List list = sqlMap.queryForList("getAllCategoriesExtended",null); + assertEquals (5, list.size()); + } + public void testNestedProperties() throws Exception { List list = sqlMap.queryForList("getFish",null); assertEquals (1, list.size()); Modified: ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/maps/RepeatingGroupMapping.xml URL: http://svn.apache.org/viewcvs/ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/maps/RepeatingGroupMapping.xml?rev=201714&r1=201713&r2=201714&view=diff ============================================================================== --- ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/maps/RepeatingGroupMapping.xml (original) +++ ibatis/trunk/java/mapper/mapper2/test/com/ibatis/sqlmap/maps/RepeatingGroupMapping.xml Fri Jun 24 21:20:29 2005 @@ -11,6 +11,10 @@ <result property="productList" resultMap="productResult"/> </resultMap> + <resultMap id="categoryResultExtended" class="testdomain.Category" extends="categoryResult"> + <result property="name" column="catname"/> + </resultMap> + <resultMap id="productResult" class="testdomain.Product" groupBy="productId"> <result property="productId" column="productid"/> <result property="categoryId" column="category"/> @@ -31,6 +35,20 @@ </resultMap> <select id="getAllCategories" resultMap="categoryResult" > + select + c.catid, c.name as catname, c.descn as catdescn, + p.productid, p.category, p.name as prodname, + p.descn as proddescn, i.itemid, i.productid, + i.listprice, i.unitcost, i.supplier, i.status, + i.attr1, i.attr2, i.attr3, i.attr4, i.attr5, + v.itemid, v.qty + from category c, product p, item i, inventory v + where c.catid = p.category + and p.productid = i.productid + and i.itemid = v.itemid + </select> + + <select id="getAllCategoriesExtended" resultMap="categoryResultExtended" > select c.catid, c.name as catname, c.descn as catdescn, p.productid, p.category, p.name as prodname,