in grails-datastore-gorm-hibernate/src/main/groovy/org/grails/orm/hibernate/query/GrailsHibernateQueryUtils.java [192:238]
public static void populateArgumentsForCriteria(
PersistentEntity entity,
Query query,
Map argMap,
ConversionService conversionService,
boolean useDefaultMapping) {
Integer maxParam = null;
Integer offsetParam = null;
if (argMap.containsKey(DynamicFinder.ARGUMENT_MAX)) {
maxParam = conversionService.convert(argMap.get(DynamicFinder.ARGUMENT_MAX), Integer.class);
}
if (argMap.containsKey(DynamicFinder.ARGUMENT_OFFSET)) {
offsetParam = conversionService.convert(argMap.get(DynamicFinder.ARGUMENT_OFFSET), Integer.class);
}
if (argMap.containsKey(DynamicFinder.ARGUMENT_FETCH_SIZE)) {
query.setFetchSize(conversionService.convert(argMap.get(DynamicFinder.ARGUMENT_FETCH_SIZE), Integer.class));
}
if (argMap.containsKey(DynamicFinder.ARGUMENT_TIMEOUT)) {
query.setTimeout(conversionService.convert(argMap.get(DynamicFinder.ARGUMENT_TIMEOUT), Integer.class));
}
if (argMap.containsKey(DynamicFinder.ARGUMENT_FLUSH_MODE)) {
query.setHibernateFlushMode(convertFlushMode(argMap.get(DynamicFinder.ARGUMENT_FLUSH_MODE)));
}
if (argMap.containsKey(DynamicFinder.ARGUMENT_READ_ONLY)) {
query.setReadOnly(ClassUtils.getBooleanFromMap(DynamicFinder.ARGUMENT_READ_ONLY, argMap));
}
final int max = maxParam == null ? -1 : maxParam;
final int offset = offsetParam == null ? -1 : offsetParam;
if (max > -1) {
query.setMaxResults(max);
}
if (offset > -1) {
query.setFirstResult(offset);
}
if (ClassUtils.getBooleanFromMap(DynamicFinder.ARGUMENT_LOCK, argMap)) {
query.setLockMode(LockModeType.PESSIMISTIC_WRITE);
query.setCacheable(false);
} else {
if (argMap.containsKey(DynamicFinder.ARGUMENT_CACHE)) {
query.setCacheable(ClassUtils.getBooleanFromMap(DynamicFinder.ARGUMENT_CACHE, argMap));
} else {
cacheCriteriaByMapping(entity.getJavaClass(), query);
}
}
}