This is an automated email from the ASF dual-hosted git repository.

borinquenkid pushed a commit to branch 8.0.x-hibernate7
in repository https://gitbox.apache.org/repos/asf/grails-core.git

commit 370711ade032544647b23466c82a6f4088500ada
Author: Walter Duque de Estrada <[email protected]>
AuthorDate: Fri Feb 20 09:20:29 2026 -0600

    Add recursive criteria tests to PredicateGeneratorSpec
---
 .../hibernatequery/PredicateGeneratorSpec.groovy   | 174 ++++++++++++++++-----
 1 file changed, 139 insertions(+), 35 deletions(-)

diff --git 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/hibernatequery/PredicateGeneratorSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/hibernatequery/PredicateGeneratorSpec.groovy
index de19560c88..a9126ca5dc 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/hibernatequery/PredicateGeneratorSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/hibernatequery/PredicateGeneratorSpec.groovy
@@ -37,7 +37,7 @@ class PredicateGeneratorSpec extends 
HibernateGormDatastoreSpec {
 
     def "test getPredicates with Equals criterion"() {
         given:
-        List<Query.Criterion> criteria = [new Query.Equals("firstName", "Bob")]
+        List criteria = [new Query.Equals("firstName", "Bob")]
         when:
         def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
         then:
@@ -46,7 +46,7 @@ class PredicateGeneratorSpec extends 
HibernateGormDatastoreSpec {
 
     def "test getPredicates with NotEquals criterion"() {
         given:
-        List<Query.Criterion> criteria = [new Query.NotEquals("firstName", 
"Bob")]
+        List criteria = [new Query.NotEquals("firstName", "Bob")]
         when:
         def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
         then:
@@ -55,7 +55,7 @@ class PredicateGeneratorSpec extends 
HibernateGormDatastoreSpec {
 
     def "test getPredicates with IdEquals criterion"() {
         given:
-        List<Query.Criterion> criteria = [new Query.IdEquals(1L)]
+        List criteria = [new Query.IdEquals(1L)]
         when:
         def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
         then:
@@ -64,7 +64,7 @@ class PredicateGeneratorSpec extends 
HibernateGormDatastoreSpec {
 
     def "test getPredicates with GreaterThan criterion"() {
         given:
-        List<Query.Criterion> criteria = [new Query.GreaterThan("age", 20)]
+        List criteria = [new Query.GreaterThan("age", 20)]
         when:
         def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
         then:
@@ -73,7 +73,7 @@ class PredicateGeneratorSpec extends 
HibernateGormDatastoreSpec {
 
     def "test getPredicates with GreaterThanEquals criterion"() {
         given:
-        List<Query.Criterion> criteria = [new Query.GreaterThanEquals("age", 
20)]
+        List criteria = [new Query.GreaterThanEquals("age", 20)]
         when:
         def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
         then:
@@ -82,7 +82,7 @@ class PredicateGeneratorSpec extends 
HibernateGormDatastoreSpec {
 
     def "test getPredicates with LessThan criterion"() {
         given:
-        List<Query.Criterion> criteria = [new Query.LessThan("age", 20)]
+        List criteria = [new Query.LessThan("age", 20)]
         when:
         def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
         then:
@@ -91,7 +91,7 @@ class PredicateGeneratorSpec extends 
HibernateGormDatastoreSpec {
 
     def "test getPredicates with LessThanEquals criterion"() {
         given:
-        List<Query.Criterion> criteria = [new Query.LessThanEquals("age", 20)]
+        List criteria = [new Query.LessThanEquals("age", 20)]
         when:
         def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
         then:
@@ -100,7 +100,7 @@ class PredicateGeneratorSpec extends 
HibernateGormDatastoreSpec {
 
     def "test getPredicates with SizeEquals criterion"() {
         given:
-        List<Query.Criterion> criteria = [new Query.SizeEquals("pets", 1)]
+        List criteria = [new Query.SizeEquals("pets", 1)]
         when:
         def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
         then:
@@ -109,7 +109,7 @@ class PredicateGeneratorSpec extends 
HibernateGormDatastoreSpec {
 
     def "test getPredicates with SizeNotEquals criterion"() {
         given:
-        List<Query.Criterion> criteria = [new Query.SizeNotEquals("pets", 1)]
+        List criteria = [new Query.SizeNotEquals("pets", 1)]
         when:
         def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
         then:
@@ -118,7 +118,7 @@ class PredicateGeneratorSpec extends 
HibernateGormDatastoreSpec {
 
     def "test getPredicates with SizeGreaterThan criterion"() {
         given:
-        List<Query.Criterion> criteria = [new Query.SizeGreaterThan("pets", 1)]
+        List criteria = [new Query.SizeGreaterThan("pets", 1)]
         when:
         def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
         then:
@@ -127,7 +127,7 @@ class PredicateGeneratorSpec extends 
HibernateGormDatastoreSpec {
 
     def "test getPredicates with SizeGreaterThanEquals criterion"() {
         given:
-        List<Query.Criterion> criteria = [new 
Query.SizeGreaterThanEquals("pets", 1)]
+        List criteria = [new Query.SizeGreaterThanEquals("pets", 1)]
         when:
         def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
         then:
@@ -136,7 +136,7 @@ class PredicateGeneratorSpec extends 
HibernateGormDatastoreSpec {
 
     def "test getPredicates with SizeLessThan criterion"() {
         given:
-        List<Query.Criterion> criteria = [new Query.SizeLessThan("pets", 1)]
+        List criteria = [new Query.SizeLessThan("pets", 1)]
         when:
         def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
         then:
@@ -145,7 +145,7 @@ class PredicateGeneratorSpec extends 
HibernateGormDatastoreSpec {
 
     def "test getPredicates with SizeLessThanEquals criterion"() {
         given:
-        List<Query.Criterion> criteria = [new Query.SizeLessThanEquals("pets", 
1)]
+        List criteria = [new Query.SizeLessThanEquals("pets", 1)]
         when:
         def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
         then:
@@ -154,7 +154,7 @@ class PredicateGeneratorSpec extends 
HibernateGormDatastoreSpec {
 
     def "test getPredicates with Between criterion"() {
         given:
-        List<Query.Criterion> criteria = [new Query.Between("age", 18, 30)]
+        List criteria = [new Query.Between("age", 18, 30)]
         when:
         def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
         then:
@@ -163,7 +163,7 @@ class PredicateGeneratorSpec extends 
HibernateGormDatastoreSpec {
 
     def "test getPredicates with ILike criterion"() {
         given:
-        List<Query.Criterion> criteria = [new Query.ILike("firstName", "B%")]
+        List criteria = [new Query.ILike("firstName", "B%")]
         when:
         def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
         then:
@@ -172,7 +172,7 @@ class PredicateGeneratorSpec extends 
HibernateGormDatastoreSpec {
 
     def "test getPredicates with RLike criterion"() {
         given:
-        List<Query.Criterion> criteria = [new Query.RLike("firstName", "B.*")]
+        List criteria = [new Query.RLike("firstName", "B.*")]
         when:
         def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
         then:
@@ -181,7 +181,7 @@ class PredicateGeneratorSpec extends 
HibernateGormDatastoreSpec {
 
     def "test getPredicates with Like criterion"() {
         given:
-        List<Query.Criterion> criteria = [new Query.Like("firstName", "B%")]
+        List criteria = [new Query.Like("firstName", "B%")]
         when:
         def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
         then:
@@ -190,7 +190,7 @@ class PredicateGeneratorSpec extends 
HibernateGormDatastoreSpec {
 
     def "test getPredicates with In criterion"() {
         given:
-        List<Query.Criterion> criteria = [new Query.In("firstName", ["Bob", 
"Fred"])]
+        List criteria = [new Query.In("firstName", ["Bob", "Fred"])]
         when:
         def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
         then:
@@ -199,7 +199,7 @@ class PredicateGeneratorSpec extends 
HibernateGormDatastoreSpec {
 
     def "test getPredicates with NotIn criterion"() {
         given:
-        List<Query.Criterion> criteria = [new Query.NotIn("firstName", new 
DetachedCriteria(Person).eq("firstName", "Bob").property("firstName"))]
+        List criteria = [new Query.NotIn("firstName", new 
DetachedCriteria(Person).eq("firstName", "Bob").property("firstName"))]
         when:
         def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
         then:
@@ -208,7 +208,7 @@ class PredicateGeneratorSpec extends 
HibernateGormDatastoreSpec {
 
     def "test getPredicates with IsNull criterion"() {
         given:
-        List<Query.Criterion> criteria = [new Query.IsNull("firstName")]
+        List criteria = [new Query.IsNull("firstName")]
         when:
         def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
         then:
@@ -217,7 +217,7 @@ class PredicateGeneratorSpec extends 
HibernateGormDatastoreSpec {
 
     def "test getPredicates with IsNotNull criterion"() {
         given:
-        List<Query.Criterion> criteria = [new Query.IsNotNull("firstName")]
+        List criteria = [new Query.IsNotNull("firstName")]
         when:
         def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
         then:
@@ -226,7 +226,7 @@ class PredicateGeneratorSpec extends 
HibernateGormDatastoreSpec {
 
     def "test getPredicates with IsEmpty criterion"() {
         given:
-        List<Query.Criterion> criteria = [new Query.IsEmpty("pets")]
+        List criteria = [new Query.IsEmpty("pets")]
         when:
         def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
         then:
@@ -235,7 +235,7 @@ class PredicateGeneratorSpec extends 
HibernateGormDatastoreSpec {
 
     def "test getPredicates with IsNotEmpty criterion"() {
         given:
-        List<Query.Criterion> criteria = [new Query.IsNotEmpty("pets")]
+        List criteria = [new Query.IsNotEmpty("pets")]
         when:
         def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
         then:
@@ -244,7 +244,7 @@ class PredicateGeneratorSpec extends 
HibernateGormDatastoreSpec {
 
     def "test getPredicates with EqualsProperty criterion"() {
         given:
-        List<Query.Criterion> criteria = [new 
Query.EqualsProperty("firstName", "lastName")]
+        List criteria = [new Query.EqualsProperty("firstName", "lastName")]
         when:
         def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
         then:
@@ -253,7 +253,7 @@ class PredicateGeneratorSpec extends 
HibernateGormDatastoreSpec {
 
     def "test getPredicates with NotEqualsProperty criterion"() {
         given:
-        List<Query.Criterion> criteria = [new 
Query.NotEqualsProperty("firstName", "lastName")]
+        List criteria = [new Query.NotEqualsProperty("firstName", "lastName")]
         when:
         def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
         then:
@@ -262,7 +262,7 @@ class PredicateGeneratorSpec extends 
HibernateGormDatastoreSpec {
 
     def "test getPredicates with LessThanEqualsProperty criterion"() {
         given:
-        List<Query.Criterion> criteria = [new 
Query.LessThanEqualsProperty("age", "age")]
+        List criteria = [new Query.LessThanEqualsProperty("age", "age")]
         when:
         def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
         then:
@@ -271,7 +271,7 @@ class PredicateGeneratorSpec extends 
HibernateGormDatastoreSpec {
 
     def "test getPredicates with LessThanProperty criterion"() {
         given:
-        List<Query.Criterion> criteria = [new Query.LessThanProperty("age", 
"age")]
+        List criteria = [new Query.LessThanProperty("age", "age")]
         when:
         def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
         then:
@@ -280,7 +280,7 @@ class PredicateGeneratorSpec extends 
HibernateGormDatastoreSpec {
 
     def "test getPredicates with GreaterThanEqualsProperty criterion"() {
         given:
-        List<Query.Criterion> criteria = [new 
Query.GreaterThanEqualsProperty("age", "age")]
+        List criteria = [new Query.GreaterThanEqualsProperty("age", "age")]
         when:
         def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
         then:
@@ -289,7 +289,7 @@ class PredicateGeneratorSpec extends 
HibernateGormDatastoreSpec {
 
     def "test getPredicates with GreaterThanProperty criterion"() {
         given:
-        List<Query.Criterion> criteria = [new Query.GreaterThanProperty("age", 
"age")]
+        List criteria = [new Query.GreaterThanProperty("age", "age")]
         when:
         def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
         then:
@@ -311,7 +311,7 @@ class PredicateGeneratorSpec extends 
HibernateGormDatastoreSpec {
         var conjunction = new Query.Conjunction()
         conjunction.add(new Query.Equals("firstName", "Bob"))
         conjunction.add(new Query.GreaterThan("age", 20))
-        List<Query.Criterion> criteria = [conjunction]
+        List criteria = [conjunction]
         when:
         def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
         then:
@@ -323,7 +323,7 @@ class PredicateGeneratorSpec extends 
HibernateGormDatastoreSpec {
         var disjunction = new Query.Disjunction()
         disjunction.add(new Query.Equals("firstName", "Bob"))
         disjunction.add(new Query.Equals("firstName", "Fred"))
-        List<Query.Criterion> criteria = [disjunction]
+        List criteria = [disjunction]
         when:
         def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
         then:
@@ -334,7 +334,7 @@ class PredicateGeneratorSpec extends 
HibernateGormDatastoreSpec {
         given:
         var negation = new Query.Negation()
         negation.add(new Query.Equals("firstName", "Bob"))
-        List<Query.Criterion> criteria = [negation]
+        List criteria = [negation]
         when:
         def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
         then:
@@ -348,12 +348,116 @@ class PredicateGeneratorSpec extends 
HibernateGormDatastoreSpec {
         associationCriteria.eq("name", "Lucky")
         List criteria = [associationCriteria]
         when:
-        def predicates = predicateGenerator.getPredicates(cb, query, root, 
(List<Query.Criterion>)criteria, fromProvider, personEntity)
+        def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
+        then:
+        predicates.length == 1
+    }
+
+    def "test getPredicates with In criterion and subquery"() {
+        given:
+        List criteria = [new Query.In("firstName", new 
DetachedCriteria(Person).eq("lastName", "Builder").property("firstName"))]
+        when:
+        def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
+        then:
+        predicates.length == 1
+    }
+
+    def "test getPredicates with GreaterThanEqualsAll"() {
+        given:
+        List criteria = [new Query.GreaterThanEqualsAll("age", new 
DetachedCriteria(Person).eq("firstName", "Bob").property("age"))]
+        when:
+        def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
+        then:
+        predicates.length == 1
+    }
+
+    def "test getPredicates with GreaterThanAll"() {
+        given:
+        List criteria = [new Query.GreaterThanAll("age", new 
DetachedCriteria(Person).eq("firstName", "Bob").property("age"))]
+        when:
+        def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
         then:
         predicates.length == 1
     }
 
-    private jakarta.persistence.criteria.Predicate[] 
callGetPredicatesUntyped(List criteria) {
-        return predicateGenerator.getPredicates(cb, query, root, criteria, 
fromProvider, personEntity)
+    def "test getPredicates with LessThanEqualsAll"() {
+        given:
+        List criteria = [new Query.LessThanEqualsAll("age", new 
DetachedCriteria(Person).eq("firstName", "Bob").property("age"))]
+        when:
+        def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
+        then:
+        predicates.length == 1
+    }
+
+    def "test getPredicates with LessThanAll"() {
+        given:
+        List criteria = [new Query.LessThanAll("age", new 
DetachedCriteria(Person).eq("firstName", "Bob").property("age"))]
+        when:
+        def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
+        then:
+        predicates.length == 1
+    }
+
+    def "test getPredicates with EqualsAll"() {
+        given:
+        List criteria = [new Query.EqualsAll("age", new 
DetachedCriteria(Person).eq("firstName", "Bob").property("age"))]
+        when:
+        def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
+        then:
+        predicates.length == 1
+    }
+
+    def "test getPredicates with GreaterThanEqualsSome"() {
+        given:
+        List criteria = [new Query.GreaterThanEqualsSome("age", new 
DetachedCriteria(Person).eq("firstName", "Bob").property("age"))]
+        when:
+        def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
+        then:
+        predicates.length == 1
+    }
+
+    def "test getPredicates with GreaterThanSome"() {
+        given:
+        List criteria = [new Query.GreaterThanSome("age", new 
DetachedCriteria(Person).eq("firstName", "Bob").property("age"))]
+        when:
+        def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
+        then:
+        predicates.length == 1
+    }
+
+    def "test getPredicates with LessThanEqualsSome"() {
+        given:
+        List criteria = [new Query.LessThanEqualsSome("age", new 
DetachedCriteria(Person).eq("firstName", "Bob").property("age"))]
+        when:
+        def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
+        then:
+        predicates.length == 1
+    }
+
+    def "test getPredicates with LessThanSome"() {
+        given:
+        List criteria = [new Query.LessThanSome("age", new 
DetachedCriteria(Person).eq("firstName", "Bob").property("age"))]
+        when:
+        def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
+        then:
+        predicates.length == 1
+    }
+
+    def "test getPredicates with Exists"() {
+        given:
+        List criteria = [new Query.Exists(new DetachedCriteria(Pet).eq("name", 
"Lucky"))]
+        when:
+        def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
+        then:
+        predicates.length == 1
+    }
+
+    def "test getPredicates with NotExists"() {
+        given:
+        List criteria = [new Query.NotExists(new 
DetachedCriteria(Pet).eq("name", "Lucky"))]
+        when:
+        def predicates = predicateGenerator.getPredicates(cb, query, root, 
criteria, fromProvider, personEntity)
+        then:
+        predicates.length == 1
     }
 }

Reply via email to