Skip to content

Commit 98818b5

Browse files
committed
GRAILS-10119 "query caching not working for countBy* method"
1 parent 3414b35 commit 98818b5

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

grails-hibernate/src/main/groovy/org/codehaus/groovy/grails/orm/hibernate/metaclass/CountByPersistentMethod.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,14 @@
1818
import groovy.lang.Closure;
1919

2020
import java.sql.SQLException;
21+
import java.util.Collections;
2122
import java.util.List;
23+
import java.util.Map;
2224
import java.util.regex.Pattern;
2325

2426
import org.codehaus.groovy.grails.commons.GrailsApplication;
2527
import org.codehaus.groovy.grails.orm.hibernate.HibernateDatastore;
28+
import org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsHibernateUtil;
2629
import org.hibernate.Criteria;
2730
import org.hibernate.HibernateException;
2831
import 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

Comments
 (0)