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) {
