|
From: <fab...@us...> - 2011-05-18 17:51:16
|
Revision: 5838
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5838&view=rev
Author: fabiomaulo
Date: 2011-05-18 17:51:09 +0000 (Wed, 18 May 2011)
Log Message:
-----------
Fixed issue reported in dev-list regarding r5793
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Loader/Criteria/CriteriaLoader.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2673/CachingWithTrasformerTests.cs
Modified: trunk/nhibernate/src/NHibernate/Loader/Criteria/CriteriaLoader.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Loader/Criteria/CriteriaLoader.cs 2011-05-17 23:07:11 UTC (rev 5837)
+++ trunk/nhibernate/src/NHibernate/Loader/Criteria/CriteriaLoader.cs 2011-05-18 17:51:09 UTC (rev 5838)
@@ -75,7 +75,7 @@
return List(session, translator.GetQueryParameters(), querySpaces, resultTypes);
}
- protected override object GetResultColumnOrRow(object[] row, IResultTransformer resultTransformer, IDataReader rs,
+ protected override object GetResultColumnOrRow(object[] row, IResultTransformer customResultTransformer, IDataReader rs,
ISessionImplementor session)
{
object[] result;
@@ -107,9 +107,10 @@
result = row;
}
- if (resultTransformer == null && result.Length == 1)
+ if (customResultTransformer == null)
{
- return result[0];
+ // apply the defaut transformer of criteria aka RootEntityResultTransformer
+ return result[result.Length - 1];
}
return result;
}
@@ -164,20 +165,20 @@
return lockModesArray;
}
- public override IList GetResultList(IList results, IResultTransformer resultTransformer)
+ public override IList GetResultList(IList results, IResultTransformer customResultTransformer)
{
- var transformer = resultTransformer ?? CriteriaSpecification.RootEntity;
+ if (customResultTransformer == null)
+ {
+ // apply the defaut transformer of criteria aka RootEntityResultTransformer
+ return results;
+ }
for (int i = 0; i < results.Count; i++)
{
- var row = results[i] as object[];
- if(row == null)
- {
- row = new object[] { results[i] };
- }
- object result = transformer.TransformTuple(row, translator.HasProjection ? translator.ProjectedAliases : userAliases);
+ var row = results[i] as object[] ?? new object[] { results[i] };
+ object result = customResultTransformer.TransformTuple(row, translator.HasProjection ? translator.ProjectedAliases : userAliases);
results[i] = result;
}
- return transformer.TransformList(results);
+ return customResultTransformer.TransformList(results);
}
}
}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2673/CachingWithTrasformerTests.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2673/CachingWithTrasformerTests.cs 2011-05-17 23:07:11 UTC (rev 5837)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2673/CachingWithTrasformerTests.cs 2011-05-18 17:51:09 UTC (rev 5838)
@@ -1,5 +1,6 @@
using System;
using System.Collections;
+using System.Linq;
using NHibernate.Cache;
using NHibernate.Cfg;
using NHibernate.Cfg.MappingSchema;
@@ -153,5 +154,57 @@
}
}
}
+
+ [Test]
+ public void WhenEagerLoadingWithCriteriaThenNotThrows()
+ {
+ // reported in dev-list instead on JIRA
+ using (new Scenario(Sfi))
+ {
+ using (var session = OpenSession())
+ using (var tx = session.BeginTransaction())
+ {
+ var query = session.CreateCriteria<Blog>()
+ .SetFetchMode("Posts", FetchMode.Eager)
+ .SetCacheable(true);
+ query.Executing(q => q.List<Blog>()).NotThrows();
+ tx.Commit();
+ }
+ }
+ }
+
+ [Test]
+ public void WhenEagerLoadingWithMultiCriteriaThenNotThrows()
+ {
+ using (new Scenario(Sfi))
+ {
+ using (var session = OpenSession())
+ using (var tx = session.BeginTransaction())
+ {
+ var query = session.CreateCriteria<Blog>()
+ .SetFetchMode("Posts", FetchMode.Eager)
+ .SetCacheable(true);
+ query.Executing(q => q.Future<Blog>().ToList()).NotThrows();
+ tx.Commit();
+ }
+ }
+ }
+
+ [Test]
+ public void WhenEagerLoadingWithHqlThenNotThrows()
+ {
+ using (new Scenario(Sfi))
+ {
+ using (var session = OpenSession())
+ using (var tx = session.BeginTransaction())
+ {
+ var query = session.CreateQuery("select b from Blog b join fetch b.Posts where b.Author = : author")
+ .SetString("author", "Gabriel")
+ .SetCacheable(true);
+ query.Executing(q => q.List<Blog>()).NotThrows();
+ tx.Commit();
+ }
+ }
+ }
}
}
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|