Closed
Description
After attempting to update from NH 5.2.7 -> 5.3.0, one of our unit tests now fails to execute a batched Criteria query.
The query looks like:
_session.QueryOver<PathHolder>()
.Where(ph => ph.Path.Id == pathId)
.Left.JoinQueryOver(ph => ph.Attachment)
.Left.JoinQueryOver(a => a.Foo)
.Left.JoinQueryOver(f => v.Bar)
.Future();
var PathHolders = _session.QueryOver<PathHolder>()
.Where(ph => ph.Path.Id == pathId)
.Left.JoinAlias(ph => ph.StatusConditions, () => statusCondition)
.TransformUsing(Transformers.DistinctRootEntity)
.Future()
.ToList();
The above .ToList()
causes the following exception:
Type: GenericADOException
Message: Failed to execute query batch[SQL: SELECT ..... ]
Stack:
at NHibernate.Multi.QueryBatch.ExecuteBatched()
at NHibernate.Multi.QueryBatch.Execute()
at NHibernate.Multi.QueryBatchExtensions.FutureList`1.get_Value()
at NHibernate.Multi.QueryBatchExtensions.FutureEnumerable`1.GetEnumerable()
at NHibernate.Multi.QueryBatchExtensions.FutureEnumerable`1.System.Collections.Generic.IEnumerable<TResult>.GetEnumerator()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
Inner Exception
Type: InvalidCastException
Message: Unable to cast object of type 'MyApp.PathHolder' to type 'System.Object[]'.
Stack:
at NHibernate.Cache.QueryCacheResultBuilder.AddRow(Object result, Object[] entities, IPersistentCollection[] collections) in D:\BuildAgent\work\30546188361a242\src\NHibernate\Cache\QueryCacheResultBuilder.cs:line 49
at NHibernate.Loader.Loader.GetRowFromResultSet(DbDataReader resultSet, ISessionImplementor session, QueryParameters queryParameters, LockMode[] lockModeArray, EntityKey optionalObjectKey, IList hydratedObjects, EntityKey[] keys, Boolean returnProxies, IResultTransformer forcedResultTransformer, QueryCacheResultBuilder queryCacheResultBuilder, Action`2 cacheBatchingHandler) in D:\BuildAgent\work\30546188361a242\src\NHibernate\Loader\Loader.cs:line 441
at NHibernate.Multi.QueryBatchItemBase`1.ProcessResultsSet(DbDataReader reader) in D:\BuildAgent\work\30546188361a242\src\NHibernate\Multi\QueryBatchItemBase.cs:line 242
at NHibernate.Multi.QueryBatch.ExecuteBatched() in D:\BuildAgent\work\30546188361a242\src\NHibernate\Multi\QueryBatch.cs:line 172
My guess is this is related to #2090 (Add support for caching fetched relations with Criteria), since it seems to be the only change in this area.