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 a308264752f57a361820a29915d9ea320228da83
Author: Walter Duque de Estrada <[email protected]>
AuthorDate: Sun Jun 22 21:45:38 2025 -0500

    Refactor PredicateGenerator
---
 .../orm/hibernate/query/PredicateGenerator.java       | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git 
a/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/query/PredicateGenerator.java
 
b/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/query/PredicateGenerator.java
index e9a4caa540..8e474021b5 100644
--- 
a/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/query/PredicateGenerator.java
+++ 
b/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/query/PredicateGenerator.java
@@ -43,18 +43,10 @@ public class PredicateGenerator {
                     if (criterion instanceof Query.Disjunction) {
                         List<Query.Criterion> criterionList = 
((Query.Disjunction) criterion).getCriteria();
                         return cb.or(getPredicates(cb, criteriaQuery, root_, 
criterionList, tablesByName));
-                    } else if (criterion instanceof Query.DistinctProjection) {
-                            // this returns always true
-                        return cb.conjunction();
+
                     } else if (criterion instanceof Query.Conjunction) {
                         List<Query.Criterion> criterionList = 
((Query.Conjunction) criterion).getCriteria();
                         return cb.and(getPredicates(cb, criteriaQuery, root_, 
criterionList, tablesByName));
-                    } else if (criterion instanceof 
DetachedAssociationCriteria<?> c) {
-                            Join child = root_.join(c.getAssociationPath(), 
JoinType.LEFT);
-                            List<Query.Criterion> criterionList = 
c.getCriteria();
-                            JpaFromProvider childTablesByName = 
(JpaFromProvider )tablesByName.clone();
-                            childTablesByName.put("root",child);
-                            return cb.and(getPredicates(cb, criteriaQuery, 
child, criterionList, childTablesByName));
                     } else if (criterion instanceof Query.Negation) {
                         List<Query.Criterion> criterionList = 
((Query.Negation) criterion).getCriteria();
                         Predicate[] predicates = getPredicates(cb, 
criteriaQuery, root_, criterionList, tablesByName);
@@ -63,6 +55,15 @@ public class PredicateGenerator {
                             throw new RuntimeException("Must have a single 
predicate behind a not");
                         }
                         return cb.not(predicates[0]);
+                    } else if (criterion instanceof Query.DistinctProjection) {
+                        // this returns always true
+                        return cb.conjunction();
+                    } else if (criterion instanceof 
DetachedAssociationCriteria<?> c) {
+                            Join child = root_.join(c.getAssociationPath(), 
JoinType.LEFT);
+                            List<Query.Criterion> criterionList = 
c.getCriteria();
+                            JpaFromProvider childTablesByName = 
(JpaFromProvider )tablesByName.clone();
+                            childTablesByName.put("root",child);
+                            return cb.and(getPredicates(cb, criteriaQuery, 
child, criterionList, childTablesByName));
                     } else if (criterion instanceof Query.IsNull c) {
                         return 
cb.isNull(tablesByName.getFullyQualifiedPath(c.getProperty()));
                     } else if (criterion instanceof Query.IsNotNull c) {

Reply via email to