This is an automated email from the ASF dual-hosted git repository. borinquenkid pushed a commit to branch merge-hibernate6 in repository https://gitbox.apache.org/repos/asf/grails-core.git
commit 1b2d7705894a33e564179f879af2cdc9397fb453 Author: Walter Duque de Estrada <[email protected]> AuthorDate: Sat Jun 21 13:10:11 2025 -0500 Fix order by non-string column --- .../grails/orm/hibernate/query/AbstractHibernateQuery.java | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/query/AbstractHibernateQuery.java b/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/query/AbstractHibernateQuery.java index eadffa0e10..c165cd758c 100644 --- a/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/query/AbstractHibernateQuery.java +++ b/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/query/AbstractHibernateQuery.java @@ -14,7 +14,6 @@ */ package org.grails.orm.hibernate.query; -import grails.gorm.DetachedCriteria; import grails.gorm.DetachedCriteria; import groovy.lang.Closure; import groovy.util.logging.Slf4j; @@ -33,17 +32,13 @@ import org.grails.datastore.mapping.proxy.ProxyHandler; import org.grails.datastore.mapping.query.AssociationQuery; import org.grails.orm.hibernate.proxy.HibernateProxyHandler; import org.grails.datastore.mapping.query.Query; -import org.grails.datastore.mapping.query.QueryException; -import org.grails.datastore.mapping.query.Restrictions; import org.grails.datastore.mapping.query.api.QueryableCriteria; import org.grails.orm.hibernate.AbstractHibernateSession; import org.grails.orm.hibernate.IHibernateTemplate; import org.hibernate.NonUniqueResultException; import org.hibernate.SessionFactory; -import org.hibernate.query.ResultListTransformer; import org.hibernate.query.criteria.HibernateCriteriaBuilder; import org.hibernate.query.criteria.JpaExpression; -import org.hibernate.query.sqm.PathElementException; import org.hibernate.transform.ResultTransformer; import org.springframework.core.convert.ConversionService; import org.springframework.core.convert.support.DefaultConversionService; @@ -56,7 +51,6 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Objects; -import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; import java.util.function.Predicate; @@ -531,7 +525,7 @@ public abstract class AbstractHibernateQuery extends Query { Map<String, From> tablesByName = assignJoinTables(joinColumns, root,aliasMap, fromMap); assignProjections(projections, cb, root, cq, tablesByName); assignGroupBy(groupProjections, root, cq, tablesByName); - assignOrderBy(cq, cb, root,tablesByName); + assignOrderBy(cq, cb, tablesByName); assignCriteria(cq, cb, root,tablesByName); org.hibernate.query.Query query = getSessionFactory() @@ -608,14 +602,14 @@ public abstract class AbstractHibernateQuery extends Query { } } - private void assignOrderBy(CriteriaQuery cq, HibernateCriteriaBuilder cb, From root, Map<String, From> tablesByName) { + private void assignOrderBy(CriteriaQuery cq, HibernateCriteriaBuilder cb, Map<String, From> tablesByName) { List<Order> orders = detachedCriteria.getOrders(); if (!orders.isEmpty()) { cq.orderBy(orders .stream() .map(order -> { Path expression = getFullyQualifiedPath(tablesByName, order.getProperty()); - if (order.isIgnoreCase()) { + if (order.isIgnoreCase() && expression.getJavaType().equals(String.class)) { if (order.getDirection().equals(Order.Direction.ASC)) { return cb.asc(cb.lower(expression)); } else {
