11package org .grails .orm .hibernate .query ;
22
3+ import org .grails .datastore .mapping .config .Property ;
34import org .grails .datastore .mapping .reflect .ClassUtils ;
45import org .grails .orm .hibernate .cfg .AbstractGrailsDomainBinder ;
56import org .grails .orm .hibernate .cfg .Mapping ;
@@ -274,24 +275,20 @@ private static void addOrderPossiblyNested(CriteriaQuery query,
274275 boolean ignoreCase ) {
275276 int firstDotPos = sort .indexOf ("." );
276277 if (firstDotPos == -1 ) {
277- PersistentProperty property = entity .getPropertyByName (sort );
278- if (ignoreCase && property != null && property .getType () != String .class ) {
279- ignoreCase = false ;
280- }
278+ final PersistentProperty <? extends Property > property = entity .getPropertyByName (sort );
279+ ignoreCase = isIgnoreCaseProperty (ignoreCase , property );
281280 addOrder (entity , query , queryRoot , criteriaBuilder , sort , order , ignoreCase );
282281 } else { // nested property
283282 String sortHead = sort .substring (0 , firstDotPos );
284283 String sortTail = sort .substring (firstDotPos + 1 );
285- PersistentProperty property = entity .getPropertyByName (sortHead );
284+ final PersistentProperty <? extends Property > property = entity .getPropertyByName (sortHead );
286285 if (property instanceof Embedded ) {
287286 // embedded objects cannot reference entities (at time of writing), so no more recursion needed
288- PersistentProperty associatedProperty = ((Embedded <?>) property ).getAssociatedEntity ().getPropertyByName (sortTail );
289- if (ignoreCase && associatedProperty != null && associatedProperty .getType () != String .class ) {
290- ignoreCase = false ;
291- }
287+ final PersistentProperty <? extends Property > associatedProperty = ((Embedded <?>) property ).getAssociatedEntity ().getPropertyByName (sortTail );
288+ ignoreCase = isIgnoreCaseProperty (ignoreCase , associatedProperty );
292289 addOrder (entity , query , queryRoot , criteriaBuilder , sort , order , ignoreCase );
293290 } else if (property instanceof Association ) {
294- Association a = (Association ) property ;
291+ final Association <? extends Property > a = (Association <? extends Property > ) property ;
295292 final Join join = queryRoot .join (sortHead );
296293 PersistentEntity associatedEntity = a .getAssociatedEntity ();
297294 Class <?> propertyTargetClass = associatedEntity .getJavaClass ();
@@ -300,6 +297,13 @@ private static void addOrderPossiblyNested(CriteriaQuery query,
300297 }
301298 }
302299
300+ private static boolean isIgnoreCaseProperty (boolean ignoreCase , PersistentProperty <? extends Property > persistentProperty ) {
301+ if (ignoreCase && persistentProperty != null && persistentProperty .getType () != String .class ) {
302+ ignoreCase = false ;
303+ }
304+ return ignoreCase ;
305+ }
306+
303307 /**
304308 * Add order directly to criteria.
305309 */
0 commit comments