From: <aye...@us...> - 2008-09-13 06:26:48
|
Revision: 3755 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3755&view=rev Author: ayenderahien Date: 2008-09-13 06:26:58 +0000 (Sat, 13 Sep 2008) Log Message: ----------- Applying modified patch for NH-1485 Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs Modified: trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs 2008-09-09 20:10:30 UTC (rev 3754) +++ trunk/nhibernate/src/NHibernate/Impl/MultiQueryImpl.cs 2008-09-13 06:26:58 UTC (rev 3755) @@ -396,17 +396,44 @@ protected virtual IList GetResultList(IList results) { - if (resultTransformer != null) + for (int i = 0, len = results.Count; i < len; ++i) { - for (int i = 0, len = results.Count; i < len; ++i) + IList subList = (IList)results[i]; + QueryParameters parameter = Parameters[i]; + HolderInstantiator holderInstantiator = GetHolderInstantiator(parameter); + if (holderInstantiator.IsRequired) { - results[i] = resultTransformer.TransformList((IList)results[i]); + for (int j = 0; j < subList.Count; j++) + { + object[] row = subList[j] as object[]; + if(row!=null) //if the result is array + subList[j] = holderInstantiator.Instantiate(row); + } + + if (holderInstantiator.ResultTransformer != null) + { + results[i] = holderInstantiator.ResultTransformer.TransformList(subList); + } } } return results; } + private HolderInstantiator GetHolderInstantiator(QueryParameters parameter) + { + //if multi query has result transformer, then this will override IQuery transformations + if (resultTransformer != null) + { + return new HolderInstantiator(resultTransformer, null); + } + if (parameter.ResultTransformer!=null) + { + return new HolderInstantiator(parameter.ResultTransformer, null); + } + return HolderInstantiator.NoopInstantiator; + } + protected ArrayList DoList() { IDbCommand command = PrepareQueriesCommand(); @@ -484,6 +511,7 @@ { log.Debug(string.Format("done processing result set ({0} rows)", count)); } + results.Add(tempResults); if (log.IsDebugEnabled) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |