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 4cd35af25c587c9c85e5b94b233cebf24f94a1a6
Author: Walter Duque de Estrada <[email protected]>
AuthorDate: Thu Sep 4 22:06:24 2025 -0500

    PagedResultList
---
 .../src/main/groovy/grails/orm/HibernateCriteriaBuilder.java  |  4 +++-
 .../groovy/org/grails/orm/hibernate/query/HibernateQuery.java | 11 ++++++++---
 .../grails/orm/hibernate/query/HibernateQueryExecutor.java    |  8 ++++----
 .../src/main/groovy/grails/gorm/PagedResultList.java          |  3 +++
 4 files changed, 18 insertions(+), 8 deletions(-)

diff --git 
a/grails-data-hibernate6/core/src/main/groovy/grails/orm/HibernateCriteriaBuilder.java
 
b/grails-data-hibernate6/core/src/main/groovy/grails/orm/HibernateCriteriaBuilder.java
index 9ade10998a..e57ebb92da 100644
--- 
a/grails-data-hibernate6/core/src/main/groovy/grails/orm/HibernateCriteriaBuilder.java
+++ 
b/grails-data-hibernate6/core/src/main/groovy/grails/orm/HibernateCriteriaBuilder.java
@@ -17,6 +17,8 @@ package grails.orm;
 
 import grails.gorm.DetachedCriteria;
 import grails.gorm.MultiTenant;
+import grails.gorm.PagedResultList;
+
 import groovy.lang.Closure;
 import groovy.lang.DelegatesTo;
 import groovy.lang.GroovyObjectSupport;
@@ -1282,7 +1284,7 @@ public class HibernateCriteriaBuilder extends 
GroovyObjectSupport implements Bui
                         }
                         hibernateQuery.order(order);
                     }
-                    result = hibernateQuery.list();
+                    result = new PagedResultList<>(hibernateQuery);
                 }
                 else {
                     result = hibernateQuery.list();
diff --git 
a/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/query/HibernateQuery.java
 
b/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/query/HibernateQuery.java
index b0090b1bb9..db0f530fea 100644
--- 
a/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/query/HibernateQuery.java
+++ 
b/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/query/HibernateQuery.java
@@ -387,7 +387,12 @@ public class HibernateQuery extends Query {
 
     @Override
     public Query order(Order order) {
-        detachedCriteria.order(order);
+        //TODO HACK
+        if (order == null) {
+            detachedCriteria.getOrders().clear();
+        } else {
+            detachedCriteria.order(order);
+        }
         return this;
     }
 
@@ -646,10 +651,10 @@ public class HibernateQuery extends Query {
         final GrailsHibernateTemplate hibernateTemplate = 
(GrailsHibernateTemplate) hibernateSession.getNativeInterface();
         return 
hibernateTemplate.execute((GrailsHibernateTemplate.HibernateCallback<Object>) 
session -> {
             HibernateQuery hibernateQuery = new 
HibernateQuery(hibernateSession, entity);
-            if (this.max != null) {
+            if (this.max != null && this.max > 0) {
                 hibernateQuery.max(this.max);
             }
-            if (this.offset != null) {
+            if (this.offset != null && this.offset > 0) {
                 hibernateQuery.offset(this.offset);
             }
             hibernateQuery.setDetachedCriteria(this.detachedCriteria.clone());
diff --git 
a/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/query/HibernateQueryExecutor.java
 
b/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/query/HibernateQueryExecutor.java
index 0a58a49c03..0fa0b59319 100644
--- 
a/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/query/HibernateQueryExecutor.java
+++ 
b/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/query/HibernateQueryExecutor.java
@@ -51,13 +51,13 @@ public record HibernateQueryExecutor(
 
   private Query configureQuery(Session session, JpaCriteriaQuery jpaCq) {
       var query = session.createQuery(jpaCq);
-      Optional.ofNullable(offset).ifPresent(query::setFirstResult);
+      Optional.ofNullable(offset).filter(v -> v > 
0).ifPresent(query::setFirstResult);
       Optional.ofNullable(queryCache).ifPresent( qc -> 
query.setHint("org.hibernate.cacheable", qc));
-      Optional.ofNullable(maxResults).ifPresent(query::setMaxResults);
+      Optional.ofNullable(maxResults).filter(v -> v > 
0).ifPresent(query::setMaxResults);
       Optional.ofNullable(lockResult).ifPresent(query::setLockMode);
       
Optional.ofNullable(resultTransformer).ifPresent(query::setResultTransformer);
-      Optional.ofNullable(fetchSize).ifPresent(query::setFetchSize);
-      Optional.ofNullable(timeout).ifPresent(query::setTimeout);
+      Optional.ofNullable(fetchSize).filter(v -> v > 
0).ifPresent(query::setFetchSize);
+      Optional.ofNullable(timeout).filter(v -> v > 
0).ifPresent(query::setTimeout);
       Optional.ofNullable(flushMode).map(mode -> 
mode.toJpaFlushMode()).ifPresent(query::setFlushMode);
       Optional.ofNullable(readOnly).ifPresent(query::setReadOnly);
       return query;
diff --git 
a/grails-datamapping-core/src/main/groovy/grails/gorm/PagedResultList.java 
b/grails-datamapping-core/src/main/groovy/grails/gorm/PagedResultList.java
index 9443ab5623..a8209e344f 100644
--- a/grails-datamapping-core/src/main/groovy/grails/gorm/PagedResultList.java
+++ b/grails-datamapping-core/src/main/groovy/grails/gorm/PagedResultList.java
@@ -107,6 +107,9 @@ public class PagedResultList<E> implements Serializable, 
List<E> {
             } else {
                 Query newQuery = (Query)query.clone();
                 newQuery.offset(0);
+                //TODO HACK!!
+                newQuery.order(null);
+                newQuery.max(1);
                 newQuery.projections().count();
                 Number result = (Number) newQuery.singleResult();
                 totalCount = result == null ? 0 : result.intValue();

Reply via email to