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 d5de3307bf8d3cf0b487b9b98ba59bf51c0fe5ab Author: Walter Duque de Estrada <[email protected]> AuthorDate: Fri Mar 6 08:24:52 2026 -0600 hibernate7: Refactoring GrailsHibernateQueryUtils and HibernateGormStaticApi --- .../orm/hibernate/HibernateGormStaticApi.groovy | 52 ++++++++-------------- .../hibernate/query/GrailsHibernateQueryUtils.java | 14 +++--- .../query/GrailsHibernateQueryUtilsSpec.groovy | 10 +++-- 3 files changed, 32 insertions(+), 44 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 d37bba3881..f65b874bbe 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 @@ -65,6 +65,7 @@ class HibernateGormStaticApi<D> extends GormStaticApi<D> { protected final HibernateSession hibernateSession protected ProxyHandler proxyHandler protected SessionFactory sessionFactory + protected GrailsHibernateQueryUtils queryUtils protected Class identityType protected ClassLoader classLoader private HibernateGormInstanceApi<D> instanceApi @@ -75,6 +76,7 @@ class HibernateGormStaticApi<D> extends GormStaticApi<D> { this.hibernateTemplate = new GrailsHibernateTemplate(datastore.getSessionFactory(), datastore) this.conversionService = datastore.mappingContext.conversionService this.proxyHandler = datastore.mappingContext.proxyHandler + this.queryUtils = new GrailsHibernateQueryUtils() this.hibernateSession = new HibernateSession( (HibernateDatastore)datastore, hibernateTemplate.getSessionFactory() @@ -310,14 +312,10 @@ class HibernateGormStaticApi<D> extends GormStaticApi<D> { } @SuppressWarnings('GroovyAssignabilityCheck') - private List<D> doListInternal(CharSequence hql, - Map namedParams, - Collection positionalParams, - Map args - , boolean isNative) { - boolean isUpdate = false + private HibernateHqlQuery prepareHqlQuery(CharSequence hql, boolean isNative, boolean isUpdate, + Map namedParams, Collection positionalParams, Map args) { def ctx = HqlQueryContext.prepare(hql, isNative, isUpdate, namedParams, persistentEntity) - def hqlQuery = HibernateHqlQuery.createHqlQuery( + return HibernateHqlQuery.createHqlQuery( (HibernateDatastore) datastore, sessionFactory, persistentEntity, @@ -326,6 +324,14 @@ class HibernateGormStaticApi<D> extends GormStaticApi<D> { positionalParams, getHibernateTemplate() ) + } + + private List<D> doListInternal(CharSequence hql, + Map namedParams, + Collection positionalParams, + Map args + , boolean isNative) { + def hqlQuery = prepareHqlQuery(hql, isNative, false, namedParams, positionalParams, args) firePreQueryEvent() def ds = (List<D>) hqlQuery.list() firePostQueryEvent(ds) @@ -338,17 +344,7 @@ class HibernateGormStaticApi<D> extends GormStaticApi<D> { Collection positionalParams, Map args , boolean isNative) { - boolean isUpdate = false - def ctx = HqlQueryContext.prepare(hql, isNative, isUpdate, namedParams, persistentEntity) - def hqlQuery = HibernateHqlQuery.createHqlQuery( - (HibernateDatastore) datastore, - sessionFactory, - persistentEntity, - ctx, - args, - positionalParams, - getHibernateTemplate() - ) + def hqlQuery = prepareHqlQuery(hql, isNative, false, namedParams, positionalParams, args) firePreQueryEvent() def sm = hqlQuery.singleResult() firePostQueryEvent(sm) @@ -359,18 +355,7 @@ class HibernateGormStaticApi<D> extends GormStaticApi<D> { Map namedParams, Collection positionalParams, Map args) { - boolean isNative = false - boolean isUpdate = true - def ctx = HqlQueryContext.prepare(hql, isNative, isUpdate, namedParams, persistentEntity) - def hqlQuery = HibernateHqlQuery.createHqlQuery( - (HibernateDatastore) datastore, - sessionFactory, - persistentEntity, - ctx, - args, - positionalParams, - getHibernateTemplate() - ) + def hqlQuery = prepareHqlQuery(hql, false, true, namedParams, positionalParams, args) firePreQueryEvent() def execute = hqlQuery.executeUpdate() firePostQueryEvent(execute) @@ -476,8 +461,8 @@ class HibernateGormStaticApi<D> extends GormStaticApi<D> { hibernateTemplate.execute { Session session -> CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder() CriteriaQuery criteriaQuery = criteriaBuilder.createQuery(persistentEntity.javaClass) - Root queryRoot = criteriaQuery.from(persistentEntity.javaClass) - GrailsHibernateQueryUtils.populateArgumentsForCriteria( + var queryRoot = criteriaQuery.from(persistentEntity.javaClass) + queryUtils.populateArgumentsForCriteria( persistentEntity, criteriaQuery, queryRoot, @@ -488,7 +473,7 @@ class HibernateGormStaticApi<D> extends GormStaticApi<D> { ) Query query = session.createQuery(criteriaQuery) - GrailsHibernateQueryUtils.populateArgumentsForCriteria( + queryUtils.populateArgumentsForCriteria( persistentEntity, query, params, @@ -496,6 +481,7 @@ class HibernateGormStaticApi<D> extends GormStaticApi<D> { ) + HibernateHqlQuery hibernateQuery = new HibernateHqlQuery( new HibernateSession((HibernateDatastore)datastore, sessionFactory), persistentEntity, diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/query/GrailsHibernateQueryUtils.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/query/GrailsHibernateQueryUtils.java index 2e89a017e1..29fd4de8b3 100644 --- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/query/GrailsHibernateQueryUtils.java +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/query/GrailsHibernateQueryUtils.java @@ -57,7 +57,7 @@ public class GrailsHibernateQueryUtils { * @param query The criteria instance * @param argMap The arguments map */ - public static void populateArgumentsForCriteria( + public void populateArgumentsForCriteria( PersistentEntity entity, CriteriaQuery<?> query, Root<?> queryRoot, @@ -123,7 +123,7 @@ public class GrailsHibernateQueryUtils { * @param query The criteria instance * @param argMap The arguments map */ - public static void populateArgumentsForCriteria( + public void populateArgumentsForCriteria( PersistentEntity entity, Query<?> query, Map<String, Object> argMap, @@ -179,7 +179,7 @@ public class GrailsHibernateQueryUtils { * Add order to criteria, creating necessary subCriteria if nested sort property (ie. * sort:'nested.property'). */ - protected static void addOrderPossiblyNested( + protected void addOrderPossiblyNested( CriteriaQuery<?> query, From<?, ?> queryRoot, CriteriaBuilder criteriaBuilder, @@ -221,7 +221,7 @@ public class GrailsHibernateQueryUtils { } } - protected static boolean isIgnoreCaseProperty( + protected boolean isIgnoreCaseProperty( boolean ignoreCase, PersistentProperty<? extends Property> persistentProperty) { if (ignoreCase && persistentProperty != null && persistentProperty.getType() != String.class) { ignoreCase = false; @@ -230,7 +230,7 @@ public class GrailsHibernateQueryUtils { } /** Add order directly to criteria. */ - protected static void addOrder( + protected void addOrder( PersistentEntity entity, CriteriaQuery<?> query, From<?, ?> queryRoot, @@ -322,7 +322,7 @@ public class GrailsHibernateQueryUtils { * @param targetClass The target class * @param criteria The criteria */ - protected static void cacheCriteriaByMapping(Class<?> targetClass, Query<?> criteria) { + protected void cacheCriteriaByMapping(Class<?> targetClass, Query<?> criteria) { Mapping m = MappingCacheHolder.getInstance().getMapping(targetClass); if (m != null && m.getCache() != null && m.getCache().getEnabled()) { criteria.setCacheable(true); @@ -359,7 +359,7 @@ public class GrailsHibernateQueryUtils { * @param object The object, converted to a string * @return The FetchMode */ - public static FetchMode getFetchMode(Object object) { + public FetchMode getFetchMode(Object object) { String name = object != null ? object.toString() : "default"; if (name.equalsIgnoreCase(FetchMode.JOIN.toString()) || name.equalsIgnoreCase("eager")) { return FetchMode.JOIN; diff --git a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/query/GrailsHibernateQueryUtilsSpec.groovy b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/query/GrailsHibernateQueryUtilsSpec.groovy index 4dc55d1cd1..dc9284a771 100644 --- a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/query/GrailsHibernateQueryUtilsSpec.groovy +++ b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/query/GrailsHibernateQueryUtilsSpec.groovy @@ -28,10 +28,12 @@ import spock.lang.Unroll class GrailsHibernateQueryUtilsSpec extends Specification { + GrailsHibernateQueryUtils queryUtils = new GrailsHibernateQueryUtils() + @Unroll def "test convertQueryFlushMode for #input"() { expect: - GrailsHibernateQueryUtils.convertQueryFlushMode(input) == expected + queryUtils.convertQueryFlushMode(input) == expected where: input | expected @@ -46,7 +48,7 @@ class GrailsHibernateQueryUtilsSpec extends Specification { @Unroll def "test getFetchMode for #input"() { expect: - GrailsHibernateQueryUtils.getFetchMode(input) == expected + queryUtils.getFetchMode(input) == expected where: input | expected @@ -80,7 +82,7 @@ class GrailsHibernateQueryUtilsSpec extends Specification { conversionService.convert(30, Integer.class) >> 30 when: - GrailsHibernateQueryUtils.populateArgumentsForCriteria(entity, query, argMap, conversionService) + queryUtils.populateArgumentsForCriteria(entity, query, argMap, conversionService) then: 1 * query.setMaxResults(10) @@ -108,7 +110,7 @@ class GrailsHibernateQueryUtilsSpec extends Specification { conversionService.convert(30, Integer.class) >> null when: - GrailsHibernateQueryUtils.populateArgumentsForCriteria(entity, query, argMap, conversionService) + queryUtils.populateArgumentsForCriteria(entity, query, argMap, conversionService) then: 0 * query.setFetchSize(_)
