Only ignore case sort if the property can be found. Fixes #594 (#596)

diff --git a/grails-datastore-gorm-hibernate5/src/main/groovy/org/grails/orm/hibernate/query/GrailsHibernateQueryUtils.java b/grails-datastore-gorm-hibernate5/src/main/groovy/org/grails/orm/hibernate/query/GrailsHibernateQueryUtils.java
index ac3c96d..d3ee177 100644
--- a/grails-datastore-gorm-hibernate5/src/main/groovy/org/grails/orm/hibernate/query/GrailsHibernateQueryUtils.java
+++ b/grails-datastore-gorm-hibernate5/src/main/groovy/org/grails/orm/hibernate/query/GrailsHibernateQueryUtils.java
@@ -272,11 +272,12 @@
                                                String sort,
                                                String order,
                                                boolean ignoreCase) {
-        if (ignoreCase && entity.getPropertyByName(sort).getType() != String.class) {
-            ignoreCase = false;
-        }
         int firstDotPos = sort.indexOf(".");
         if (firstDotPos == -1) {
+            PersistentProperty property = entity.getPropertyByName(sort);
+            if (ignoreCase && property != null && property.getType() != String.class) {
+                ignoreCase = false;
+            }
             addOrder(entity, query, queryRoot, criteriaBuilder, sort, order, ignoreCase);
         } else { // nested property
             String sortHead = sort.substring(0, firstDotPos);
@@ -284,6 +285,10 @@
             PersistentProperty property = entity.getPropertyByName(sortHead);
             if (property instanceof Embedded) {
                 // embedded objects cannot reference entities (at time of writing), so no more recursion needed
+                PersistentProperty associatedProperty = ((Embedded<?>) property).getAssociatedEntity().getPropertyByName(sortTail);
+                if (ignoreCase && associatedProperty != null && associatedProperty.getType() != String.class) {
+                    ignoreCase = false;
+                }
                 addOrder(entity, query, queryRoot, criteriaBuilder, sort, order, ignoreCase);
             } else if (property instanceof Association) {
                 Association a = (Association) property;