I'm just thinking* it might be easier to do this with HQL

   Diego

*: I didn't try

On Wed, Feb 17, 2010 at 15:03, Scott White <[email protected]> wrote:

> Using version 2.1.0.4
> Since the following code clears the projection before adding the
> rowcount as a projection if the target query had Group By clauses
> these will be lost and affect the count returned.  The rowcount will
> be much higher than expected:
>
>                public static ICriteria TransformToRowCount(ICriteria
> criteria)
>                {
>                        return
> TransformToRowCount((CriteriaImpl)criteria.Clone());
>                }
>
>                private static CriteriaImpl TransformToRowCount(CriteriaImpl
> criteria)
>                {
>                        criteria.ClearOrders();
>
>
> criteria.SetFirstResult(0).SetMaxResults(RowSelection.NoValue).SetProjection(Projections.RowCount());
>                        return criteria;
>                }
>
>
> Example:
>            var criteria = session.CreateCriteria(typeof(Cat))
>              .SetProjection( Projections.ProjectionList()
>              .Add( Projections.Avg("Weight") )
>              .Add( Projections.Max("Weight") )
>              .Add( Projections.GroupProperty("Color") ))
>
>            var itemCountCrit =
> CriteriaTransformer.TransformToRowCount(criteria);
>
>            // works
>            var list = criteria
>                .SetFirstResult(filter.CurrentPageIndex *
> filter.ItemsPerPage)
>                .SetMaxResults(filter.ItemsPerPage)
>                .Future<T>();
>
>            // will return a number that is too high since the
> projections above will be stripped
>            var resultCount = itemCountCrit.FutureValue<int>();
>
>
> I'm working on a couple of workarounds or fixes any ideas or thoughts
> are appreicated.
>
> --
> You received this message because you are subscribed to the Google Groups
> "nhusers" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<nhusers%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/nhusers?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en.

Reply via email to