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 3d9b4b1918d812232625f26a0704c91272a3f3dd Author: Walter Duque de Estrada <[email protected]> AuthorDate: Sun Jun 8 19:59:12 2025 -0500 Added Size predicates --- .../org/grails/orm/hibernate/query/PredicateGenerator.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) 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 5bb4a180fc..e36f390431 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 @@ -5,12 +5,14 @@ import jakarta.persistence.criteria.CriteriaQuery; import jakarta.persistence.criteria.From; import jakarta.persistence.criteria.Join; import jakarta.persistence.criteria.JoinType; +import jakarta.persistence.criteria.Path; import jakarta.persistence.criteria.Predicate; import jakarta.persistence.criteria.Root; import jakarta.persistence.criteria.Subquery; import org.grails.datastore.gorm.query.criteria.DetachedAssociationCriteria; import org.grails.datastore.mapping.query.Query; import org.hibernate.query.criteria.HibernateCriteriaBuilder; +import org.hibernate.query.criteria.JpaExpression; import org.hibernate.query.criteria.JpaInPredicate; import org.hibernate.query.sqm.tree.predicate.SqmInListPredicate; import org.slf4j.Logger; @@ -97,6 +99,18 @@ public class PredicateGenerator { return cb.lt(getFullyQualifiedPath(tablesByName, c.getProperty()), (Number) c.getValue()); } else if (criterion instanceof Query.LessThanEquals c) { return cb.le(getFullyQualifiedPath(tablesByName, c.getProperty()), (Number) c.getValue()); + } else if (criterion instanceof Query.SizeEquals c) { + return cb.equal(cb.size(getFullyQualifiedPath(tablesByName, c.getProperty())), c.getValue()); + } else if (criterion instanceof Query.SizeNotEquals c) { + return cb.notEqual(cb.size(getFullyQualifiedPath(tablesByName, c.getProperty())), c.getValue()); + } else if (criterion instanceof Query.SizeGreaterThan c) { + return cb.gt(cb.size(getFullyQualifiedPath(tablesByName, c.getProperty())), (Number) c.getValue()); + } else if (criterion instanceof Query.SizeGreaterThanEquals c) { + return cb.ge(cb.size(getFullyQualifiedPath(tablesByName, c.getProperty())), (Number) c.getValue()); + } else if (criterion instanceof Query.SizeLessThan c) { + return cb.lt(cb.size(getFullyQualifiedPath(tablesByName, c.getProperty())), (Number) c.getValue()); + } else if (criterion instanceof Query.SizeLessThanEquals c) { + return cb.le(cb.size(getFullyQualifiedPath(tablesByName, c.getProperty())), (Number) c.getValue()); } else if (criterion instanceof Query.Between c) { if (c.getFrom() instanceof String && c.getTo() instanceof String) { return cb.between(getFullyQualifiedPath(tablesByName, c.getProperty()), (String) c.getFrom(), (String) c.getTo());
