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

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

commit fd162edc7d28eb4d6d2ce0b76949b649b4cbd814
Author: Walter Duque de Estrada <[email protected]>
AuthorDate: Wed Mar 4 15:36:01 2026 -0600

    refactor(hibernate7): more cleanup HibernateGormStaticApi
---
 .../orm/hibernate/HibernateGormStaticApi.groovy    | 26 +++++------
 .../hibernate/HibernateGormStaticApiSpec.groovy    | 51 ++++++++++++++++++++++
 2 files changed, 61 insertions(+), 16 deletions(-)

diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/HibernateGormStaticApi.groovy
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/HibernateGormStaticApi.groovy
index 2ac3406a78..e4b923d5e0 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/HibernateGormStaticApi.groovy
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/HibernateGormStaticApi.groovy
@@ -15,11 +15,11 @@
  */
 package org.grails.orm.hibernate
 
+import org.hibernate.jpa.AvailableHints
+
 import org.grails.datastore.mapping.model.PersistentProperty
-import org.hibernate.query.criteria.JpaRoot
 
 import grails.orm.HibernateCriteriaBuilder
-import groovy.transform.CompileDynamic
 import groovy.transform.CompileStatic
 import groovy.util.logging.Slf4j
 import jakarta.persistence.criteria.Expression
@@ -43,7 +43,6 @@ import org.grails.orm.hibernate.support.HibernateRuntimeUtils
 import org.hibernate.LockMode
 import org.hibernate.Session
 import org.hibernate.SessionFactory
-import org.hibernate.jpa.QueryHints
 import org.hibernate.query.Query
 
 import org.springframework.core.convert.ConversionService
@@ -91,13 +90,13 @@ class HibernateGormStaticApi<D> extends GormStaticApi<D> {
     }
 
     @Override
-    public <T> T withNewSession(Closure<T> callable) {
+     <T> T withNewSession(Closure<T> callable) {
         HibernateDatastore hibernateDatastore = (HibernateDatastore) datastore
         hibernateDatastore.withNewSession(callable)
     }
 
     @Override
-    def <T> T withSession(Closure<T> callable) {
+     <T> T withSession(Closure<T> callable) {
         HibernateDatastore hibernateDatastore = (HibernateDatastore) datastore
         hibernateDatastore.withSession(callable)
     }
@@ -121,7 +120,7 @@ class HibernateGormStaticApi<D> extends GormStaticApi<D> {
         }
         else {
             // for non multi-tenant entities we process get(..) via the second 
level cache
-            hibernateTemplate.get(persistentEntity.javaClass, id)
+            (D) hibernateTemplate.execute { Session session -> 
session.find(persistentEntity.javaClass, id) }
         }
     }
 
@@ -145,7 +144,7 @@ class HibernateGormStaticApi<D> extends GormStaticApi<D> {
                     criteriaBuilder.equal((Expression<?>)  
queryRoot.get(persistentEntity.identity.name), id)
             )
             Query criteria = session.createQuery(criteriaQuery)
-                    .setHint(QueryHints.HINT_READONLY, true)
+                    .setHint(AvailableHints.HINT_READ_ONLY, true)
             HibernateHqlQuery hibernateHqlQuery = new HibernateHqlQuery(
                     hibernateSession, persistentEntity, criteria)
             return proxyHandler.unwrap( hibernateHqlQuery.singleResult() )
@@ -178,7 +177,7 @@ class HibernateGormStaticApi<D> extends GormStaticApi<D> {
 
     @Override
     List<D> getAll() {
-        new HibernateQuery(hibernateSession, persistentEntity).list()
+        createHibernateQuery().list()
     }
 
     protected HibernateQuery createHibernateQuery() {
@@ -187,12 +186,12 @@ class HibernateGormStaticApi<D> extends GormStaticApi<D> {
 
     @Override
     Integer count() {
-        new HibernateQuery(hibernateSession,persistentEntity 
).count().singleResult() as Integer
+        createHibernateQuery().count().singleResult() as Integer
     }
 
     @Override
     boolean exists(Serializable id) {
-        !new HibernateQuery(hibernateSession,persistentEntity 
).idEq(convertIdentifier(id)).list().isEmpty()
+        !createHibernateQuery().idEq(convertIdentifier(id)).list().isEmpty()
     }
 
     @Override
@@ -453,7 +452,7 @@ class HibernateGormStaticApi<D> extends GormStaticApi<D> {
                 else if(conversionService.canConvert(idInstanceType, 
identityType)) {
                     try {
                         return (Serializable)conversionService.convert(id, 
identityType)
-                    } catch (Throwable e) {
+                    } catch (Throwable ignored) {
                         return null
                     }
                 }
@@ -471,11 +470,6 @@ class HibernateGormStaticApi<D> extends GormStaticApi<D> {
 
 
 
-    private String normalizeMultiLineQueryString(String query) {
-        if (query?.indexOf('\n') != -1)
-           return query?.trim().replace('\n', ' ')
-        return query
-    }
 
     @Override
     List<D> list(Map params = Collections.emptyMap()) {
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/HibernateGormStaticApiSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/HibernateGormStaticApiSpec.groovy
index 5b9eb319d7..d1e5c73653 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/HibernateGormStaticApiSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/HibernateGormStaticApiSpec.groovy
@@ -451,6 +451,57 @@ class HibernateGormStaticApiSpec extends 
HibernateGormDatastoreSpec {
         instances.find { it.id == e3.id }
     }
 
+    void "Test getAll with empty list returns empty list"() {
+        when:
+        def instances = HibernateGormStaticApiEntity.getAll([])
+
+        then:
+        instances == []
+    }
+
+    void "Test getAll preserves input id order"() {
+        given:
+        def e1 = new HibernateGormStaticApiEntity(name: 
"first").save(failOnError: true)
+        def e2 = new HibernateGormStaticApiEntity(name: 
"second").save(failOnError: true)
+        def e3 = new HibernateGormStaticApiEntity(name: "third").save(flush: 
true, failOnError: true)
+
+        when: "ids are requested in reverse order"
+        def instances = HibernateGormStaticApiEntity.getAll([e3.id, e1.id, 
e2.id])
+
+        then: "results are in the same order as the requested ids"
+        instances.size() == 3
+        instances[0].id == e3.id
+        instances[1].id == e1.id
+        instances[2].id == e2.id
+    }
+
+    void "Test getAll returns null in position for non-existent ids"() {
+        given:
+        def e1 = new HibernateGormStaticApiEntity(name: "exists").save(flush: 
true, failOnError: true)
+        def missingId = e1.id + 9999L
+
+        when:
+        def instances = HibernateGormStaticApiEntity.getAll([e1.id, missingId])
+
+        then:
+        instances.size() == 2
+        instances[0].id == e1.id
+        instances[1] == null
+    }
+
+    void "Test getAll with duplicate ids returns entry at each position"() {
+        given:
+        def e1 = new HibernateGormStaticApiEntity(name: "dup").save(flush: 
true, failOnError: true)
+
+        when:
+        def instances = HibernateGormStaticApiEntity.getAll([e1.id, e1.id])
+
+        then:
+        instances.size() == 2
+        instances[0].id == e1.id
+        instances[1].id == e1.id
+    }
+
     void "Test list method"() {
         given:
         new HibernateGormStaticApiEntity(name: "test1").save(failOnError: true)

Reply via email to