I agree it probably would be.  However my code is actually called by
DAOs to create a wrapper around them for pagination.  This use case is
fairly documented and the documented solutions work EXCEPT in this
scenerio.  I'm working on manually constructing the SQL from the
criteria expression right now.  I think I'm close but still not sure
this is the best solution.

On Feb 18, 5:12 am, Diego Mijelshon <[email protected]> wrote:
> 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).SetProjectio 
> > n(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