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());

Reply via email to