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 84a261590a7122247d1642432e031f113c21eaed Author: Walter Duque de Estrada <[email protected]> AuthorDate: Sun Aug 17 17:26:08 2025 -0500 start refactoring more to HibernateHqlQuery --- .../orm/hibernate/HibernateGormStaticApi.groovy | 27 +++++++++++++++------- .../orm/hibernate/query/HibernateHqlQuery.java | 22 ++++++++++++++++++ 2 files changed, 41 insertions(+), 8 deletions(-) diff --git a/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/HibernateGormStaticApi.groovy b/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/HibernateGormStaticApi.groovy index 42828e74b5..666e15a34b 100644 --- a/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/HibernateGormStaticApi.groovy +++ b/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/HibernateGormStaticApi.groovy @@ -253,7 +253,9 @@ class HibernateGormStaticApi<D> extends GormStaticApi<D> { populateQueryArguments(q, queryNamedArgs) populateQueryArguments(q, args) populateQueryWithNamedArguments(q, queryNamedArgs) - createHqlQuery(session, q).singleResult() + + def hqlQuery = HibernateHqlQuery.createHqlQuery(session, q, datastore as HibernateDatastore, sessionFactory, persistentEntity) + hqlQuery.singleResult() } } @@ -283,7 +285,9 @@ class HibernateGormStaticApi<D> extends GormStaticApi<D> { populateQueryArguments(q, args) populateQueryWithNamedArguments(q, params) - createHqlQuery(session, q).list() + + def hibernateHqlQuery = HibernateHqlQuery.createHqlQuery(session, q, datastore as HibernateDatastore, sessionFactory, persistentEntity) + hibernateHqlQuery.list() } } @@ -313,7 +317,9 @@ class HibernateGormStaticApi<D> extends GormStaticApi<D> { q.addEntity(persistentClass) populateQueryArguments(q, args) q.setMaxResults(1) - def results = createHqlQuery(session, q).list() + + def hibernateHqlQuery = HibernateHqlQuery.createHqlQuery(session,q, datastore as HibernateDatastore,sessionFactory,persistentEntity) + def results = hibernateHqlQuery.list() if(results.isEmpty()) { return null } @@ -348,7 +354,9 @@ class HibernateGormStaticApi<D> extends GormStaticApi<D> { } q.addEntity(persistentClass) populateQueryArguments(q, args) - return createHqlQuery(session, q).list() + + def hibernateHqlQuery = HibernateHqlQuery.createHqlQuery(session,q, datastore as HibernateDatastore,sessionFactory,persistentEntity) + return hibernateHqlQuery.list() } } @@ -489,7 +497,9 @@ class HibernateGormStaticApi<D> extends GormStaticApi<D> { populateQueryArguments(q, args) populateQueryWithNamedArguments(q, params) - createHqlQuery(session, q).list() + + def hibernateHqlQuery = HibernateHqlQuery.createHqlQuery(session,q, datastore as HibernateDatastore,sessionFactory,persistentEntity) + hibernateHqlQuery.list() } } @@ -519,7 +529,9 @@ class HibernateGormStaticApi<D> extends GormStaticApi<D> { } } populateQueryArguments(q, args) - createHqlQuery(session, q).list() + + def hibernateHqlQuery = HibernateHqlQuery.createHqlQuery(session,q, datastore as HibernateDatastore,sessionFactory,persistentEntity) + hibernateHqlQuery.list() } } @@ -914,8 +926,7 @@ class HibernateGormStaticApi<D> extends GormStaticApi<D> { default: hibernateSession.setFlushMode(FlushModeType.COMMIT) } - HibernateHqlQuery query = new HibernateHqlQuery(hibernateSession, persistentEntity, q) - return query + return HibernateHqlQuery.createHqlQuery(session,q, datastore as HibernateDatastore,sessionFactory,persistentEntity) } } diff --git a/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/query/HibernateHqlQuery.java b/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/query/HibernateHqlQuery.java index f00433246f..8c5542de0f 100644 --- a/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/query/HibernateHqlQuery.java +++ b/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/query/HibernateHqlQuery.java @@ -1,11 +1,15 @@ package org.grails.orm.hibernate.query; +import jakarta.persistence.FlushModeType; import org.grails.datastore.mapping.core.Datastore; import org.grails.datastore.mapping.core.Session; import org.grails.datastore.mapping.model.PersistentEntity; import org.grails.datastore.mapping.query.Query; import org.grails.datastore.mapping.query.event.PostQueryEvent; import org.grails.datastore.mapping.query.event.PreQueryEvent; +import org.grails.orm.hibernate.HibernateDatastore; +import org.grails.orm.hibernate.HibernateSession; +import org.hibernate.SessionFactory; import org.springframework.context.ApplicationEventPublisher; import java.util.List; @@ -49,4 +53,22 @@ public class HibernateHqlQuery extends Query { return results; } } + + + public static HibernateHqlQuery createHqlQuery(org.hibernate.Session session + , org.hibernate.query.Query q + , HibernateDatastore dataStore + , SessionFactory sessionFactory + , PersistentEntity persistentEntity + ) { + var hibernateSession = new HibernateSession( dataStore, sessionFactory); + switch (session.getHibernateFlushMode()) { + case AUTO, ALWAYS: + hibernateSession.setFlushMode(FlushModeType.AUTO); + break; + default: + hibernateSession.setFlushMode(FlushModeType.COMMIT); + } + return new HibernateHqlQuery(hibernateSession, persistentEntity, q); + } }
