1818import groovy .lang .Closure ;
1919
2020import java .sql .SQLException ;
21+ import java .util .Collections ;
2122import java .util .List ;
23+ import java .util .Map ;
2224import java .util .regex .Pattern ;
2325
2426import org .codehaus .groovy .grails .commons .GrailsApplication ;
2527import org .codehaus .groovy .grails .orm .hibernate .HibernateDatastore ;
28+ import org .codehaus .groovy .grails .orm .hibernate .cfg .GrailsHibernateUtil ;
2629import org .hibernate .Criteria ;
2730import org .hibernate .HibernateException ;
2831import org .hibernate .Session ;
@@ -55,7 +58,7 @@ public CountByPersistentMethod(HibernateDatastore datastore, GrailsApplication a
5558
5659 @ SuppressWarnings ("rawtypes" )
5760 @ Override
58- protected Object doInvokeInternalWithExpressions (final Class clazz , String methodName , Object [] arguments ,
61+ protected Object doInvokeInternalWithExpressions (final Class clazz , String methodName , final Object [] arguments ,
5962 final List expressions , String operatorInUse , final DetachedCriteria detachedCriteria , final Closure additionalCriteria ) {
6063
6164 final String operator = OPERATOR_OR .equals (operatorInUse ) ? OPERATOR_OR : OPERATOR_AND ;
@@ -64,6 +67,8 @@ protected Object doInvokeInternalWithExpressions(final Class clazz, String metho
6467 public Object doInHibernate (Session session ) throws HibernateException , SQLException {
6568 final Criteria crit = getCriteria (datastore , application , session , detachedCriteria , additionalCriteria , clazz );
6669 crit .setProjection (Projections .rowCount ());
70+ Map argsMap = (arguments .length > 1 && (arguments [1 ] instanceof Map )) ? (Map ) arguments [1 ] : Collections .EMPTY_MAP ;
71+ GrailsHibernateUtil .populateArgumentsForCriteria (application , clazz , crit , argsMap );
6772 populateCriteriaWithExpressions (crit , operator , expressions );
6873 return crit .uniqueResult ();
6974 }
0 commit comments