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 f20ed48226cb383a2d7f82e28cdbfed0dbf6f0d1
Author: Walter Duque de Estrada <[email protected]>
AuthorDate: Sat Jun 28 19:00:41 2025 -0400

    Fixed relationship in Entities
---
 .../orm/hibernate/query/AbstractHibernateQuery.java     | 17 +++++++++++------
 .../grails/orm/hibernate/query/PredicateGenerator.java  |  2 ++
 .../gorm/specs/hibernatequery/HibernateQuerySpec.groovy |  2 +-
 .../grails/data/testing/tck/domains/Person.groovy       |  1 +
 4 files changed, 15 insertions(+), 7 deletions(-)

diff --git 
a/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/query/AbstractHibernateQuery.java
 
b/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/query/AbstractHibernateQuery.java
index f774635904..a3e6de0445 100644
--- 
a/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/query/AbstractHibernateQuery.java
+++ 
b/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/query/AbstractHibernateQuery.java
@@ -501,11 +501,11 @@ public abstract class AbstractHibernateQuery extends 
Query {
         assignOrderBy(cq, tablesByName);
         assignCriteria(cq, cb, root,tablesByName);
 
-        org.hibernate.query.Query query = getSessionFactory()
-                .getCurrentSession()
-                .createQuery(cq)
-                .setFirstResult(this.offset)
-                .setHint("org.hibernate.cacheable", queryCache);;
+        org.hibernate.query.Query query = createQuery(cq);
+        if (this.offset > 0) {
+            query.setFirstResult(this.offset);
+        }
+        query.setHint("org.hibernate.cacheable", queryCache);;
         if (this.max > -1) {
             query.setMaxResults(this.max);
         }
@@ -518,6 +518,11 @@ public abstract class AbstractHibernateQuery extends Query 
{
         return query;
     }
 
+    public org.hibernate.query.Query<?> createQuery(JpaCriteriaQuery<?> cq) {
+        return getSessionFactory()
+                .getCurrentSession()
+                .createQuery(cq);
+    }
 
 
     @SuppressWarnings("unchecked")
@@ -680,7 +685,7 @@ public abstract class AbstractHibernateQuery extends Query {
         return ((IHibernateTemplate) 
session.getNativeInterface()).getSessionFactory();
     }
 
-    private HibernateCriteriaBuilder getCriteriaBuilder() {
+    public HibernateCriteriaBuilder getCriteriaBuilder() {
         return getSessionFactory().getCriteriaBuilder();
     }
 
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 f1c09f5272..837dea451a 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
@@ -83,6 +83,8 @@ public class PredicateGenerator {
                         return 
cb.isNotNull(fromsByProvider.getFullyQualifiedPath(c.getProperty()));
                     } else if (criterion instanceof Query.IsEmpty c) {
                         return 
cb.isEmpty(fromsByProvider.getFullyQualifiedPath(c.getProperty()));
+                    } else if (criterion instanceof Query.IsNotEmpty c) {
+                        return 
cb.isNotEmpty(fromsByProvider.getFullyQualifiedPath(c.getProperty()));
                     } else if (criterion instanceof Query.Equals c) {
                         return 
cb.equal(fromsByProvider.getFullyQualifiedPath(c.getProperty()), c.getValue());
                     } else if (criterion instanceof Query.NotEquals c) {
diff --git 
a/grails-data-hibernate6/core/src/test/groovy/grails/gorm/specs/hibernatequery/HibernateQuerySpec.groovy
 
b/grails-data-hibernate6/core/src/test/groovy/grails/gorm/specs/hibernatequery/HibernateQuerySpec.groovy
index 614daf4c0a..d58101a3fa 100644
--- 
a/grails-data-hibernate6/core/src/test/groovy/grails/gorm/specs/hibernatequery/HibernateQuerySpec.groovy
+++ 
b/grails-data-hibernate6/core/src/test/groovy/grails/gorm/specs/hibernatequery/HibernateQuerySpec.groovy
@@ -52,7 +52,7 @@ class HibernateQuerySpec extends HibernateGormDatastoreSpec {
     def equalsJoins() {
         given:
         new Person(firstName: "Fred", lastName: "Rogers", age: 51).save(flush: 
true)
-        oldBob.addToPets(new Pet(name: "Lucky")).save(flush:"true")
+        new Pet(name: "Lucky", age: 1, owner: oldBob).save(flush: true)
         hibernateQuery.join("pets").eq("pets.name", "Lucky")
         when:
         def newBob = hibernateQuery.singleResult()
diff --git 
a/grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/domains/Person.groovy
 
b/grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/domains/Person.groovy
index f14720c1ed..5ca95b3cd2 100644
--- 
a/grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/domains/Person.groovy
+++ 
b/grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/domains/Person.groovy
@@ -70,6 +70,7 @@ class Person implements Serializable, Comparable<Person>, 
AsyncEntity<Person> {
         firstName index: true
         lastName index: true
         age index: true
+        pets cascade: 'all-delete-orphan'
     }
 
     static constraints = {

Reply via email to