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 3a81863f761e00a35ae050114f171525f6a9d751
Author: Walter Duque de Estrada <wbdu...@mac.com>
AuthorDate: Mon Aug 18 18:29:05 2025 -0500

     more to HibernateHqlQuery
---
 .../orm/hibernate/HibernateGormStaticApi.groovy    | 69 ++++++----------------
 .../orm/hibernate/query/HibernateHqlQuery.java     |  8 +--
 2 files changed, 21 insertions(+), 56 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 f1a65f06d2..5be40fc1d8 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
@@ -247,7 +247,7 @@ class HibernateGormStaticApi<D> extends GormStaticApi<D> {
         def template = hibernateTemplate
         queryNamedArgs = new HashMap(queryNamedArgs)
         return (D) template.execute { Session session ->
-            def hqlQuery = HibernateHqlQuery.createHqlQuery(session, datastore 
as HibernateDatastore, sessionFactory, persistentEntity, queryString)
+            def hqlQuery = HibernateHqlQuery.createHqlQuery(session, datastore 
as HibernateDatastore, sessionFactory, persistentEntity, queryString, false)
             template.applySettings(hqlQuery.getQuery());
             hqlQuery.populateQuerySettings(queryNamedArgs)
             hqlQuery.populateQuerySettings(args)
@@ -275,7 +275,7 @@ class HibernateGormStaticApi<D> extends GormStaticApi<D> {
 
         def template = hibernateTemplate
         return (List<D>) template.execute { Session session ->
-            def hibernateHqlQuery = HibernateHqlQuery.createHqlQuery(session, 
datastore as HibernateDatastore, sessionFactory, persistentEntity,queryString)
+            def hibernateHqlQuery = HibernateHqlQuery.createHqlQuery(session, 
datastore as HibernateDatastore, sessionFactory, persistentEntity,queryString, 
false)
             template.applySettings(hibernateHqlQuery.getQuery())
             hibernateHqlQuery.populateQuerySettings(params)
             hibernateHqlQuery.populateQuerySettings(args)
@@ -293,25 +293,15 @@ class HibernateGormStaticApi<D> extends GormStaticApi<D> {
             if(sql instanceof GString) {
                 sql = buildOrdinalParameterQueryFromGString((GString)sql, 
params)
             }
+            args = new HashMap(args)
 
-            NativeQuery q = 
(NativeQuery)session.createNativeQuery(sql.toString())
 
-            template.applySettings(q)
-
-            params.eachWithIndex { val, int i ->
-                i++
-                if (val instanceof CharSequence) {
-                    q.setParameter i, val.toString()
-                }
-                else {
-                    q.setParameter i, val
-                }
-            }
-            q.addEntity(persistentClass)
-            populateQueryArguments(q, args)
-            q.setMaxResults(1)
-
-            def results = createHqlQuery(session, q).list()
+            def hibernateHqlQuery = HibernateHqlQuery.createHqlQuery(session, 
datastore as HibernateDatastore, sessionFactory, persistentEntity, 
sql.toString(), true)
+            template.applySettings(hibernateHqlQuery.getQuery())
+            args.put(DynamicFinder.ARGUMENT_MAX, 1)
+            hibernateHqlQuery.populateQuerySettings(args)
+            hibernateHqlQuery.populateQueryWithIndexedArguments(params)
+            def results = hibernateHqlQuery.list()
             if(results.isEmpty()) {
                 return null
             }
@@ -325,29 +315,18 @@ class HibernateGormStaticApi<D> extends GormStaticApi<D> {
     List<D> findAllWithSql(CharSequence sql, Map args = 
Collections.emptyMap()) {
         IHibernateTemplate template = hibernateTemplate
         return (List<D>) template.execute { Session session ->
-
             List params = []
             if(sql instanceof GString) {
                 sql = buildOrdinalParameterQueryFromGString((GString)sql, 
params)
             }
 
-            NativeQuery q = 
(NativeQuery)session.createNativeQuery(sql.toString(),persistentEntity.javaClass)
-
-            template.applySettings(q)
-
-            params.eachWithIndex { val, int i ->
-                i++
-                if (val instanceof CharSequence) {
-                    q.setParameter i, val.toString()
-                }
-                else {
-                    q.setParameter i, val
-                }
-            }
-            q.addEntity(persistentClass)
-            populateQueryArguments(q, args)
+            def hibernateHqlQuery =HibernateHqlQuery.createHqlQuery(session, 
datastore as HibernateDatastore, sessionFactory, persistentEntity, 
sql.toString(), true)
+            template.applySettings(hibernateHqlQuery.getQuery())
+            hibernateHqlQuery.populateQuerySettings(args)
+            hibernateHqlQuery.populateQueryWithIndexedArguments(params)
 
-            return createHqlQuery(session, q).list()
+            def list = hibernateHqlQuery.list()
+            return list
         }
     }
 
@@ -503,7 +482,7 @@ class HibernateGormStaticApi<D> extends GormStaticApi<D> {
         args = new HashMap(args)
 
         return (List<D>) template.execute { Session session ->
-            def hqlQuery = HibernateHqlQuery.createHqlQuery(session, datastore 
as HibernateDatastore, sessionFactory, persistentEntity, queryString)
+            def hqlQuery = HibernateHqlQuery.createHqlQuery(session, datastore 
as HibernateDatastore, sessionFactory, persistentEntity, queryString, false)
             template.applySettings(hqlQuery.getQuery())
             hqlQuery.populateQuerySettings(args)
             hqlQuery.populateQueryWithIndexedArguments(params as List)
@@ -889,20 +868,6 @@ class HibernateGormStaticApi<D> extends GormStaticApi<D> {
         datastore.applicationEventPublisher.publishEvent(new 
PreQueryEvent(datastore, hibernateQuery))
     }
 
-    protected HibernateHqlQuery createHqlQuery(Session session, Query q) {
-        HibernateSession hibernateSession = new 
HibernateSession((HibernateDatastore) datastore, sessionFactory)
-        FlushMode hibernateMode = session.getHibernateFlushMode()
-        switch (hibernateMode) {
-            case FlushMode.AUTO:
-                hibernateSession.setFlushMode(FlushModeType.AUTO)
-                break
-            case FlushMode.ALWAYS:
-                hibernateSession.setFlushMode(FlushModeType.AUTO)
-                break
-            default:
-                hibernateSession.setFlushMode(FlushModeType.COMMIT)
-        }
-        return new HibernateHqlQuery(hibernateSession, persistentEntity, q)
-    }
+
 
 }
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 576e469636..c3d8c77689 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
@@ -13,10 +13,8 @@ import org.grails.orm.hibernate.HibernateSession;
 import org.grails.orm.hibernate.exceptions.GrailsQueryException;
 import org.hibernate.FlushMode;
 import org.hibernate.SessionFactory;
-import org.hibernate.query.NativeQuery;
 import org.springframework.context.ApplicationEventPublisher;
 
-import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
@@ -69,8 +67,10 @@ public class HibernateHqlQuery extends Query {
             , HibernateDatastore dataStore
             , SessionFactory sessionFactory
             , PersistentEntity persistentEntity
-            , String sqlString) {
-        var q =  session.createQuery(sqlString, 
persistentEntity.getJavaClass());
+            , String sqlString
+            , boolean isNative
+        ) {
+        var q = isNative ? session.createNativeQuery(sqlString, 
persistentEntity.getJavaClass()) : session.createQuery(sqlString, 
persistentEntity.getJavaClass());
         var hibernateSession = new HibernateSession( dataStore, 
sessionFactory);
         HibernateHqlQuery hibernateHqlQuery = new 
HibernateHqlQuery(hibernateSession, persistentEntity, q);
         hibernateHqlQuery.setFlushMode(session.getHibernateFlushMode());

Reply via email to