Author: gbayon Date: Tue Dec 18 10:58:03 2007 New Revision: 605293 URL: http://svn.apache.org/viewvc?rev=605293&view=rev Log: Fix IBATISNET-251
Modified: ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/LineItem.xml ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Order.xml ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/ResultMapTest.cs ibatis/trunk/cs/mapper/IBatisNet.DataMapper/MappedStatements/ArgumentStrategy/SelectStrategy.cs ibatis/trunk/cs/mapper/IBatisNet.DataMapper/MappedStatements/PropertStrategy/SelectStrategy.cs Modified: ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/LineItem.xml URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/LineItem.xml?rev=605293&r1=605292&r2=605293&view=diff ============================================================================== --- ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/LineItem.xml (original) +++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/LineItem.xml Tue Dec 18 10:58:03 2007 @@ -84,18 +84,31 @@ order by LineItem_Code </statement> - <statement id="GetSpecificLineItem" + <statement id="GetSpecificLineItem-JIRA-251" parameterClass="Hashtable" resultClass="LineItem"> - select - LineItem_ID as Id, - LineItem_Code as Code, - LineItem_Quantity as Quantity, - LineItem_Price as Price - from LineItems - where Order_ID = #Order_ID# - and LineItem_ID = #LineItem_ID# - </statement> + select + LineItem_ID as Id, + LineItem_Code as Code, + LineItem_Quantity as Quantity, + LineItem_Price as Price + from LineItems + where Order_ID = #Order_ID# + and LineItem_ID = #Order_FavouriteLineItem# + </statement> + + <statement id="GetSpecificLineItem" + parameterClass="Hashtable" + resultClass="LineItem"> + select + LineItem_ID as Id, + LineItem_Code as Code, + LineItem_Quantity as Quantity, + LineItem_Price as Price + from LineItems + where Order_ID = #Order_ID# + and LineItem_ID = #LineItem_ID# + </statement> <statement id="GetSpecificLineItemWithPicture" parameterClass="Hashtable" Modified: ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Order.xml URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Order.xml?rev=605293&r1=605292&r2=605293&view=diff ============================================================================== --- ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Order.xml (original) +++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Order.xml Tue Dec 18 10:58:03 2007 @@ -344,6 +344,19 @@ <result property="PostalCode" column="Order_PostalCode"/> <result property="FavouriteLineItem" column="Order_ID=Order_ID,LineItem_ID=Order_FavouriteLineItem" select="GetSpecificLineItem" /> </resultMap> + + <resultMap id="order-with-favourite-line-item-JIRA-251" class="Order"> + <result property="Id" column="Order_ID"/> + <result property="Date" column="Order_Date"/> + <result property="CardExpiry" column="Order_CardExpiry"/> + <result property="CardType" column="Order_CardType"/> + <result property="CardNumber" column="Order_CardNumber"/> + <result property="Street" column="Order_Street"/> + <result property="City" column="Order_City"/> + <result property="Province" column="Order_Province"/> + <result property="PostalCode" column="Order_PostalCode"/> + <result property="FavouriteLineItem" column="Order_ID,Order_FavouriteLineItem" select="GetSpecificLineItem-JIRA-251" /> + </resultMap> <resultMap id="order-joined-favourite2" class="Order"> <result property="Id" column="Order_ID"/> @@ -612,6 +625,12 @@ resultMap="order-with-favourite-line-item" > select * from Orders where Order_ID = #value# </statement> + + <statement id="GetOrderWithFavouriteLineItem-JIRA-251" + parameterClass="int" + resultMap="order-with-favourite-line-item-JIRA-251" > + select * from Orders where Order_ID = #value# + </statement> <statement id="GetOrderWithLineItemCollection" parameterClass="int" Modified: ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/ResultMapTest.cs URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/ResultMapTest.cs?rev=605293&r1=605292&r2=605293&view=diff ============================================================================== --- ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/ResultMapTest.cs (original) +++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/ResultMapTest.cs Tue Dec 18 10:58:03 2007 @@ -338,6 +338,25 @@ Assert.IsNotNull(order2); Assert.IsNotNull(order2.FavouriteLineItem); Assert.AreEqual(17, order2.FavouriteLineItem.Id); + } + + /// <summary> + /// Test a composite Key Mapping. + /// It must be: key1,key2,... (old syntax) + /// </summary> + [Test] + public void TestCompositeKeyMapping_JIRA_251() + { + Order order1 = (Order)sqlMap.QueryForObject("GetOrderWithFavouriteLineItem-JIRA-251", 1); + Order order2 = (Order)sqlMap.QueryForObject("GetOrderWithFavouriteLineItem-JIRA-251", 2); + + Assert.IsNotNull(order1); + Assert.IsNotNull(order1.FavouriteLineItem); + Assert.AreEqual(1, order1.FavouriteLineItem.Id); + + Assert.IsNotNull(order2); + Assert.IsNotNull(order2.FavouriteLineItem); + Assert.AreEqual(17, order2.FavouriteLineItem.Id); } Modified: ibatis/trunk/cs/mapper/IBatisNet.DataMapper/MappedStatements/ArgumentStrategy/SelectStrategy.cs URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/MappedStatements/ArgumentStrategy/SelectStrategy.cs?rev=605293&r1=605292&r2=605293&view=diff ============================================================================== --- ibatis/trunk/cs/mapper/IBatisNet.DataMapper/MappedStatements/ArgumentStrategy/SelectStrategy.cs (original) +++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper/MappedStatements/ArgumentStrategy/SelectStrategy.cs Tue Dec 18 10:58:03 2007 @@ -119,8 +119,11 @@ while (!wasNull && enumerator.MoveNext()) { string hashKey = ((string)enumerator.Current).Trim(); - enumerator.MoveNext(); - object hashValue = reader.GetValue( reader.GetOrdinal(((string)enumerator.Current).Trim()) ); + if (paramString.Contains("="))// old 1.x style multiple params + { + enumerator.MoveNext(); + } + object hashValue = reader.GetValue( reader.GetOrdinal(((string)enumerator.Current).Trim()) ); keyMap.Add(hashKey, hashValue ); wasNull = (hashValue == DBNull.Value); Modified: ibatis/trunk/cs/mapper/IBatisNet.DataMapper/MappedStatements/PropertStrategy/SelectStrategy.cs URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/MappedStatements/PropertStrategy/SelectStrategy.cs?rev=605293&r1=605292&r2=605293&view=diff ============================================================================== --- ibatis/trunk/cs/mapper/IBatisNet.DataMapper/MappedStatements/PropertStrategy/SelectStrategy.cs (original) +++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper/MappedStatements/PropertStrategy/SelectStrategy.cs Tue Dec 18 10:58:03 2007 @@ -120,8 +120,11 @@ while (!wasNull && enumerator.MoveNext()) { string hashKey = ((string)enumerator.Current).Trim(); - enumerator.MoveNext(); - object hashValue = reader.GetValue( reader.GetOrdinal(((string)enumerator.Current).Trim()) ); + if (paramString.Contains("="))// old 1.x style multiple params + { + enumerator.MoveNext(); + } + object hashValue = reader.GetValue( reader.GetOrdinal(((string)enumerator.Current).Trim()) ); keyMap.Add(hashKey, hashValue ); wasNull = (hashValue == DBNull.Value);