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

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

commit 27952547d94bf451bcb69c831446ff06e8372ec4
Author: Walter B Duque de Estrada <[email protected]>
AuthorDate: Sun Dec 14 20:53:23 2025 -0600

    Partial
---
 gradle/hibernate7-test-config.gradle               | 71 ++++++++++++++++++++++
 .../orm/hibernate/HibernateGormInstanceApi.groovy  | 57 +++++++++++++++--
 .../orm/hibernate/cfg/GrailsDomainBinder.java      | 28 +++++++--
 .../cfg/HibernateMappingContextConfiguration.java  | 11 +++-
 .../cfg/domainbinding/CascadeBehaviorFetcher.java  |  8 +--
 .../HibernateConnectionSourceSettings.groovy       |  6 +-
 ...bernateOptimisticLockingStyleMappingSpec.groovy |  4 +-
 .../grails/gorm/specs/AutoTimestampSpec.groovy     |  4 +-
 .../CascadeToBidirectionalAsssociationSpec.groovy  |  4 +-
 .../gorm/specs/CountByWithEmbeddedSpec.groovy      |  4 +-
 .../grails/gorm/specs/DeleteAllWhereSpec.groovy    |  4 +-
 .../grails/gorm/specs/DomainGetterSpec.groovy      |  4 +-
 .../grails/gorm/specs/EnumMappingSpec.groovy       |  4 +-
 .../gorm/specs/HibernateGormDatastoreSpec.groovy   |  9 ++-
 .../specs/LastUpdateWithDynamicUpdateSpec.groovy   |  4 +-
 .../groovy/grails/gorm/specs/ManyToOneSpec.groovy  |  4 +-
 .../specs/MultiColumnUniqueConstraintSpec.groovy   |  4 +-
 .../test/groovy/grails/gorm/specs/RLikeSpec.groovy |  4 +-
 .../grails/gorm/specs/ReadOperationSpec.groovy     |  4 +-
 .../grails/gorm/specs/SizeConstraintSpec.groovy    |  4 +-
 .../groovy/grails/gorm/specs/ToOneProxySpec.groovy |  4 +-
 .../specs/WhereQueryWithAssociationSortSpec.groovy |  6 +-
 ...WithNewSessionAndExistingTransactionSpec.groovy |  4 +-
 .../gorm/specs/autoimport/AutoImportSpec.groovy    |  4 +-
 .../BidirectionalOneToOneWithUniqueSpec.groovy     |  4 +-
 .../inheritance/SubclassToOneProxySpec.groovy      |  4 +-
 .../TablePerConcreteClassAndDateCreatedSpec.groovy |  4 +-
 .../TablePerConcreteClassImportedSpec.groovy       |  4 +-
 .../specs/mappedby/MultipleOneToOneSpec.groovy     |  4 +-
 .../specs/proxy/Hibernate6GroovyProxySpec.groovy   |  4 +-
 .../gorm/specs/traits/InterfacePropertySpec.groovy |  4 +-
 .../specs/validation/DeepValidationSpec.groovy     |  4 +-
 .../core/GrailsDataHibernate7TckManager.groovy}    |  8 +--
 ...ails.data.testing.tck.base.GrailsDataTckManager |  2 +-
 .../data/testing/tck/base/GrailsDataTckSpec.groovy |  5 +-
 35 files changed, 225 insertions(+), 82 deletions(-)

diff --git a/gradle/hibernate7-test-config.gradle 
b/gradle/hibernate7-test-config.gradle
index e69de29bb2..429111909b 100644
--- a/gradle/hibernate7-test-config.gradle
+++ b/gradle/hibernate7-test-config.gradle
@@ -0,0 +1,71 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    https://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+dependencies {
+    // 
https://docs.gradle.org/8.3/userguide/upgrading_version_8.html#test_framework_implementation_dependencies
+    add('testRuntimeOnly', 'org.junit.platform:junit-platform-launcher')
+}
+
+tasks.withType(Test).configureEach {
+    onlyIf {
+        ![
+                'onlyFunctionalTests',
+                'onlyHibernate5Tests',
+                'skipHibernate6Tests',
+                'onlyMongodbTests',
+                'onlyCoreTests',
+                'skipTests'
+        ].find {
+            project.hasProperty(it)
+        }
+    }
+
+    useJUnitPlatform()
+    systemProperty('hibernate7.gorm.suite', 
System.getProperty('hibernate7.gorm.suite') ?: true)
+    reports.html.required = !System.getenv('CI')
+    reports.junitXml.required = !System.getenv('CI')
+    testLogging {
+        events('passed', 'skipped', 'failed')
+        showExceptions = true
+        exceptionFormat = 'full'
+        showCauses = true
+        showStackTraces = true
+        showStandardStreams = true
+
+        // set options for log level DEBUG and INFO
+        debug {
+            events('started', 'passed', 'skipped', 'failed', 'standardOut', 
'standardError')
+            exceptionFormat = 'full'
+        }
+        info.events = debug.events
+        info.exceptionFormat = debug.exceptionFormat
+    }
+    afterTest { desc, result ->
+        logger.quiet(' -- Executed test {} [{}] with result: {}', desc.name, 
desc.className, result.resultType)
+    }
+    afterSuite { desc, result ->
+        if (!desc.parent) { // will match the outermost suite
+            def output = "Results: ${result.resultType} (${result.testCount} 
tests, ${result.successfulTestCount} successes, ${result.failedTestCount} 
failures, ${result.skippedTestCount} skipped)"
+            def startItem = '|  ', endItem = '  |'
+            def repeatLength = startItem.length() + output.length() + 
endItem.length()
+            def dashes = '-' * repeatLength
+            logger.quiet('\n{}\n{}{}{}\n{}', dashes, startItem, output, 
endItem, dashes)
+        }
+    }
+}
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/HibernateGormInstanceApi.groovy
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/HibernateGormInstanceApi.groovy
index 44414d9c5b..c658d05033 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/HibernateGormInstanceApi.groovy
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/HibernateGormInstanceApi.groovy
@@ -17,6 +17,12 @@ package org.grails.orm.hibernate
 
 import org.codehaus.groovy.runtime.InvokerHelper
 
+import org.hibernate.engine.spi.SessionFactoryImplementor
+import org.hibernate.engine.spi.SharedSessionContractImplementor
+import org.hibernate.generator.Generator
+import org.hibernate.id.CompositeNestedGeneratedValueGenerator
+import org.hibernate.id.IdentifierGenerationException
+
 import grails.gorm.validation.CascadingValidator
 import groovy.transform.CompileDynamic
 import groovy.transform.CompileStatic
@@ -147,12 +153,49 @@ class HibernateGormInstanceApi<D> extends 
GormInstanceApi<D> {
 
         try {
 
+            Serializable idVal = (Serializable) 
InvokerHelper.getProperty(target, "id")
+
             boolean hasInsert = shouldInsert(arguments)
             boolean hasMerge = shouldMerge(arguments)
 
-            if (hasInsert || (!hasMerge && !isItInDb(target))) {
+
+            def isNotInDb = !isItInDb(target, idVal)
+            def shouldInsert = !hasMerge && isNotInDb
+            println ("hasInsert " + hasInsert)
+            println ("hasMerge " + hasMerge)
+            println("isNotInDb " + isNotInDb)
+            println("shouldInsert " + shouldInsert)
+            if (hasInsert || shouldInsert) {
+                if (!idVal){
+                    EntityPersister persister = ((SessionFactoryImplementor) 
sessionFactory)
+                            .getMappingMetamodel()
+                            .getEntityDescriptor(domainClass.getName())
+                    final Generator generator = persister.getGenerator();
+
+                    def doesNotGenerateOnInsert = 
!generator.generatesOnInsert()
+                    def isCompositeGenerator = generator instanceof 
CompositeNestedGeneratedValueGenerator
+                    println("doesNotGenerateOnInsert " + 
doesNotGenerateOnInsert)
+                    println("isCompositeGenerator " + isCompositeGenerator)
+                    if ( doesNotGenerateOnInsert || isCompositeGenerator)  {
+                        idVal = (Serializable) persister.getIdentifier(target, 
(SharedSessionContractImplementor) sessionFactory.currentSession)
+                        if ( idVal == null ) {
+                            throw new IdentifierGenerationException( 
"Identifier of entity '" + persister.getEntityName()
+                                    + "' must be manually assigned before 
calling 'persist()'" );
+
+                        }
+                        println("idVal " + idVal)
+                        InvokerHelper.setProperty(target, "id", idVal)
+                    }
+
+                }
+
                 return performPersist(target, shouldFlush)
             } else {
+                if ( idVal == null ) {
+                    throw new IdentifierGenerationException( "Identifier of 
entity '" + persistentEntity.getName()
+                            + "' must be manually assigned before calling 
'merge()'" );
+
+                }
                 return performMerge(target, shouldFlush)
             }
         } finally {
@@ -160,10 +203,10 @@ class HibernateGormInstanceApi<D> extends 
GormInstanceApi<D> {
         }
     }
 
-    private boolean isItInDb(D target) {
-        Serializable idVal = (Serializable) InvokerHelper.getProperty(target, 
"id")
+    private boolean isItInDb(D target,Serializable idVal) {
         String hql = "select count(e.id) from ${persistentEntity.name} e where 
e.id = :id"
-        return HibernateHqlQuery.createHqlQuery(
+
+        def result = HibernateHqlQuery.createHqlQuery(
                 (HibernateDatastore) datastore,
                 sessionFactory,
                 persistentEntity,
@@ -171,9 +214,10 @@ class HibernateGormInstanceApi<D> extends 
GormInstanceApi<D> {
                 false,
                 false,
                 null,
-                ["id":idVal]
+                ["id": idVal]
                 , null
-                , (GrailsHibernateTemplate) hibernateTemplate).list().size() 
== 1
+                , (GrailsHibernateTemplate) hibernateTemplate).singleResult()
+        return result == 1
     }
 
     @CompileDynamic
@@ -259,6 +303,7 @@ class HibernateGormInstanceApi<D> extends 
GormInstanceApi<D> {
     }
 
     protected D performPersist(final D target, final boolean shouldFlush) {
+        println("target " + target)
         hibernateTemplate.execute { Session session ->
             try {
                 markInsertActive()
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsDomainBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsDomainBinder.java
index 1e2707bc0a..8c2b70fb0f 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsDomainBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsDomainBinder.java
@@ -39,10 +39,15 @@ import 
org.grails.orm.hibernate.cfg.domainbinding.TypeNameProvider;
 import org.grails.orm.hibernate.cfg.domainbinding.*;
 import org.hibernate.FetchMode;
 import org.hibernate.MappingException;
+import org.hibernate.boot.ResourceStreamLocator;
 import org.hibernate.boot.internal.MetadataBuildingContextRootImpl;
 import org.hibernate.boot.internal.RootMappingDefaults;
+import org.hibernate.boot.model.TypeContributions;
+import org.hibernate.boot.model.TypeContributor;
 import org.hibernate.boot.model.internal.BinderHelper;
 import org.hibernate.boot.model.naming.PhysicalNamingStrategy;
+import org.hibernate.boot.spi.AdditionalMappingContributions;
+import org.hibernate.boot.spi.AdditionalMappingContributor;
 import org.hibernate.boot.spi.InFlightMetadataCollector;
 import org.hibernate.boot.spi.MetadataBuildingContext;
 import org.hibernate.engine.OptimisticLockStyle;
@@ -78,6 +83,7 @@ import org.hibernate.mapping.Table;
 import org.hibernate.mapping.UnionSubclass;
 import org.hibernate.mapping.Value;
 import org.hibernate.metamodel.mapping.JdbcMapping;
+import org.hibernate.service.ServiceRegistry;
 import org.hibernate.type.ForeignKeyDirection;
 import org.hibernate.type.StandardBasicTypes;
 import org.hibernate.type.Type;
@@ -113,7 +119,7 @@ import static 
org.hibernate.boot.model.naming.Identifier.toIdentifier;
  */
 @SuppressWarnings("WeakerAccess")
 public class GrailsDomainBinder
-//        implements MetadataContributor
+        implements AdditionalMappingContributor, TypeContributor
 {
 
     private static final String CASCADE_ALL_DELETE_ORPHAN = 
"all-delete-orphan";
@@ -207,8 +213,9 @@ public class GrailsDomainBinder
         this.namingStrategy = namingStrategy;
     }
 
-    //TODO FIXME
-    public void contribute(InFlightMetadataCollector metadataCollector, 
IndexView jandexIndex) {
+
+    @Override
+    public void contribute(AdditionalMappingContributions contributions, 
InFlightMetadataCollector metadataCollector, ResourceStreamLocator 
resourceStreamLocator, MetadataBuildingContext buildingContext) {
         RootMappingDefaults rootMappingDefaults = null;
         this.metadataBuildingContext = new MetadataBuildingContextRootImpl(
                 "default",
@@ -219,10 +226,10 @@ public class GrailsDomainBinder
         );
 
         
filterHibernateEntities(hibernateMappingContext.getHibernatePersistentEntities())
-                    .forEach(hibernatePersistentEntity -> 
bindRoot(hibernatePersistentEntity, metadataCollector, sessionFactoryName));
-
+                .forEach(hibernatePersistentEntity -> 
bindRoot(hibernatePersistentEntity, metadataCollector, sessionFactoryName));
     }
 
+
     private List<HibernatePersistentEntity> 
filterHibernateEntities(java.util.Collection<HibernatePersistentEntity> 
persistentEntities) {
         return persistentEntities.stream()
                 .filter(this::isNotAnnotatedEntity)
@@ -2136,6 +2143,17 @@ public class GrailsDomainBinder
         return metadataBuildingContext;
     }
 
+    @Override
+    public String getContributorName() {
+        return AdditionalMappingContributor.super.getContributorName();
+    }
+
+
+    @Override
+    public void contribute(TypeContributions typeContributions, 
ServiceRegistry serviceRegistry) {
+
+    }
+
     /**
      * Second pass class for grails relationships. This is required as all
      * persistent classes need to be loaded in the first pass and then 
relationships
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateMappingContextConfiguration.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateMappingContextConfiguration.java
index ea4b25576c..6d1f78309f 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateMappingContextConfiguration.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateMappingContextConfiguration.java
@@ -20,7 +20,7 @@ import 
org.hibernate.boot.registry.StandardServiceRegistryBuilder;
 import 
org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl;
 import org.hibernate.boot.registry.classloading.spi.ClassLoaderService;
 import org.hibernate.boot.registry.selector.spi.StrategySelector;
-//import org.hibernate.boot.spi.MetadataContributor;
+import org.hibernate.boot.spi.AdditionalMappingContributor;
 import org.hibernate.cfg.AvailableSettings;
 import org.hibernate.cfg.Configuration;
 import org.hibernate.cfg.Environment;
@@ -249,8 +249,13 @@ public class HibernateMappingContextConfiguration extends 
Configuration implemen
         ClassLoaderService classLoaderService = new 
ClassLoaderServiceImpl(appClassLoader) {
             @Override
             public <S> Collection<S> loadJavaServices(Class<S> 
serviceContract) {
-
-                    return super.loadJavaServices(serviceContract);
+                // Ensure Grails contributes mappings for GORM entities even 
if they lack JPA @Entity
+                if 
(AdditionalMappingContributor.class.isAssignableFrom(serviceContract)) {
+                    @SuppressWarnings("unchecked")
+                    Collection<S> contributors = (Collection<S>) 
Collections.singletonList(domainBinder);
+                    return contributors;
+                }
+                return super.loadJavaServices(serviceContract);
             }
         };
         EventListenerIntegrator eventListenerIntegrator = new 
EventListenerIntegrator(hibernateEventListeners, eventListeners);
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/CascadeBehaviorFetcher.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/CascadeBehaviorFetcher.java
index bb48b01cc4..f61d9d0404 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/CascadeBehaviorFetcher.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/CascadeBehaviorFetcher.java
@@ -54,12 +54,12 @@ public class CascadeBehaviorFetcher {
             return ALL;
         }
         else if (association.isOneToOne()) {
-            return association.isOwningSide() ?  ALL : SAVE_UPDATE;
+            return ALL;
         }
         else if (association.isOneToMany()) {
-            return association.isOwningSide() ?  ALL : SAVE_UPDATE;
+            return ALL;
         }  else if (association.isManyToMany()) {
-           return  association.isCorrectlyOwned() || association.isCircular() 
? SAVE_UPDATE :NONE;
+           return  association.isCorrectlyOwned() || association.isCircular() 
? ALL :NONE;
         }
         else if (association.isManyToOne()) {
             if ( association.isCorrectlyOwned() && !association.isCircular()) {
@@ -76,7 +76,7 @@ public class CascadeBehaviorFetcher {
             return ALL;
         }
         else if (Map.class.isAssignableFrom(association.getType())) {
-            return association.isCorrectlyOwned() ? ALL :SAVE_UPDATE;
+            return ALL;
         } else {
             throw new MappingException("Unrecognized association type " + 
association.getType() );
         }
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/connections/HibernateConnectionSourceSettings.groovy
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/connections/HibernateConnectionSourceSettings.groovy
index f7d2b2b4c2..f87692be51 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/connections/HibernateConnectionSourceSettings.groovy
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/connections/HibernateConnectionSourceSettings.groovy
@@ -194,8 +194,10 @@ class HibernateConnectionSourceSettings extends 
ConnectionSourceSettings {
         Map<String, Object> 
toHibernateEventListeners(AbstractClosureEventTriggeringInterceptor 
eventTriggeringInterceptor) {
             if(eventTriggeringInterceptor != null) {
                 return [
-                    'save': eventTriggeringInterceptor,
-                    'save-update': eventTriggeringInterceptor,
+//                    'save': eventTriggeringInterceptor,
+//                    'save-update': eventTriggeringInterceptor,
+//                        "merge": eventTriggeringInterceptor,
+//                        "persist": eventTriggeringInterceptor,
                     'pre-load': eventTriggeringInterceptor,
                     'post-load': eventTriggeringInterceptor,
                     'pre-insert': eventTriggeringInterceptor,
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/hibernate/mapping/HibernateOptimisticLockingStyleMappingSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/hibernate/mapping/HibernateOptimisticLockingStyleMappingSpec.groovy
index 1f6d10338f..e66a823d43 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/hibernate/mapping/HibernateOptimisticLockingStyleMappingSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/hibernate/mapping/HibernateOptimisticLockingStyleMappingSpec.groovy
@@ -19,13 +19,13 @@
 package grails.gorm.hibernate.mapping
 
 import grails.persistence.Entity
-import org.apache.grails.data.hibernate6.core.GrailsDataHibernate6TckManager
+import org.apache.grails.data.hibernate7.core.GrailsDataHibernate7TckManager
 import org.apache.grails.data.testing.tck.base.GrailsDataTckSpec
 import org.hibernate.boot.Metadata
 import org.hibernate.engine.OptimisticLockStyle
 import org.hibernate.mapping.PersistentClass
 
-class HibernateOptimisticLockingStyleMappingSpec extends 
GrailsDataTckSpec<GrailsDataHibernate6TckManager> {
+class HibernateOptimisticLockingStyleMappingSpec extends 
GrailsDataTckSpec<GrailsDataHibernate7TckManager> {
 
     void setupSpec() {
         manager.addAllDomainClasses([HibernateOptLockingStyleVersioned, 
HibernateOptLockingStyleNotVersioned])
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/AutoTimestampSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/AutoTimestampSpec.groovy
index 361adc8aa5..73a65ac2ed 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/AutoTimestampSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/AutoTimestampSpec.groovy
@@ -20,10 +20,10 @@
 package grails.gorm.specs
 
 import grails.gorm.annotation.Entity
-import org.apache.grails.data.hibernate6.core.GrailsDataHibernate6TckManager
+import org.apache.grails.data.hibernate7.core.GrailsDataHibernate7TckManager
 import org.apache.grails.data.testing.tck.base.GrailsDataTckSpec
 
-class AutoTimestampSpec extends 
GrailsDataTckSpec<GrailsDataHibernate6TckManager> {
+class AutoTimestampSpec extends 
GrailsDataTckSpec<GrailsDataHibernate7TckManager> {
     void setupSpec() {
         manager.addAllDomainClasses([DateCreatedTestA, DateCreatedTestB])
     }
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/CascadeToBidirectionalAsssociationSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/CascadeToBidirectionalAsssociationSpec.groovy
index 09f9c242a4..16e67d8c68 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/CascadeToBidirectionalAsssociationSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/CascadeToBidirectionalAsssociationSpec.groovy
@@ -22,7 +22,7 @@ import grails.gorm.specs.entities.Club
 import grails.gorm.specs.entities.Contract
 import grails.gorm.specs.entities.Player
 import grails.gorm.specs.entities.Team
-import org.apache.grails.data.hibernate6.core.GrailsDataHibernate6TckManager
+import org.apache.grails.data.hibernate7.core.GrailsDataHibernate7TckManager
 import org.apache.grails.data.testing.tck.base.GrailsDataTckSpec
 import spock.lang.Issue
 
@@ -30,7 +30,7 @@ import spock.lang.Issue
  * Created by graemerocher on 01/02/16.
  */
 @Issue('https://github.com/grails/grails-core/issues/9290')
-class CascadeToBidirectionalAsssociationSpec extends 
GrailsDataTckSpec<GrailsDataHibernate6TckManager> {
+class CascadeToBidirectionalAsssociationSpec extends 
GrailsDataTckSpec<GrailsDataHibernate7TckManager> {
     void setupSpec() {
         manager.addAllDomainClasses([Club, Team, Player, Contract])
     }
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/CountByWithEmbeddedSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/CountByWithEmbeddedSpec.groovy
index fd153814ed..77a9f5bf08 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/CountByWithEmbeddedSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/CountByWithEmbeddedSpec.groovy
@@ -20,14 +20,14 @@
 package grails.gorm.specs
 
 import grails.gorm.annotation.Entity
-import org.apache.grails.data.hibernate6.core.GrailsDataHibernate6TckManager
+import org.apache.grails.data.hibernate7.core.GrailsDataHibernate7TckManager
 import org.apache.grails.data.testing.tck.base.GrailsDataTckSpec
 import spock.lang.Issue
 
 /**
  * Created by graemerocher on 20/04/16.
  */
-class CountByWithEmbeddedSpec extends 
GrailsDataTckSpec<GrailsDataHibernate6TckManager> {
+class CountByWithEmbeddedSpec extends 
GrailsDataTckSpec<GrailsDataHibernate7TckManager> {
     void setupSpec() {
         manager.addAllDomainClasses([CountByPerson])
     }
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/DeleteAllWhereSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/DeleteAllWhereSpec.groovy
index 57e9547d19..31419ecfd7 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/DeleteAllWhereSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/DeleteAllWhereSpec.groovy
@@ -19,7 +19,7 @@
 package grails.gorm.specs
 
 import grails.gorm.specs.entities.Club
-import org.apache.grails.data.hibernate6.core.GrailsDataHibernate6TckManager
+import org.apache.grails.data.hibernate7.core.GrailsDataHibernate7TckManager
 import org.apache.grails.data.testing.tck.base.GrailsDataTckSpec
 import spock.lang.Issue
 
@@ -27,7 +27,7 @@ import spock.lang.Issue
  * @author Graeme Rocher
  * @since 1.0
  */
-class DeleteAllWhereSpec extends 
GrailsDataTckSpec<GrailsDataHibernate6TckManager> {
+class DeleteAllWhereSpec extends 
GrailsDataTckSpec<GrailsDataHibernate7TckManager> {
     void setupSpec() {
         manager.addAllDomainClasses([Club])
     }
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/DomainGetterSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/DomainGetterSpec.groovy
index dd925a7b94..ef08e00e46 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/DomainGetterSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/DomainGetterSpec.groovy
@@ -19,13 +19,13 @@
 package grails.gorm.specs
 
 import grails.gorm.annotation.Entity
-import org.apache.grails.data.hibernate6.core.GrailsDataHibernate6TckManager
+import org.apache.grails.data.hibernate7.core.GrailsDataHibernate7TckManager
 import org.apache.grails.data.testing.tck.base.GrailsDataTckSpec
 
 /**
  * Created by graemerocher on 16/09/2016.
  */
-class DomainGetterSpec extends 
GrailsDataTckSpec<GrailsDataHibernate6TckManager> {
+class DomainGetterSpec extends 
GrailsDataTckSpec<GrailsDataHibernate7TckManager> {
     void setupSpec() {
         manager.addAllDomainClasses([DomainOne, DomainWithGetter])
     }
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/EnumMappingSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/EnumMappingSpec.groovy
index 5c30e40db7..7bf020b6cd 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/EnumMappingSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/EnumMappingSpec.groovy
@@ -19,7 +19,7 @@
 package grails.gorm.specs
 
 import grails.gorm.annotation.Entity
-import org.apache.grails.data.hibernate6.core.GrailsDataHibernate6TckManager
+import org.apache.grails.data.hibernate7.core.GrailsDataHibernate7TckManager
 import org.apache.grails.data.testing.tck.base.GrailsDataTckSpec
 import org.hibernate.engine.spi.SessionImplementor
 
@@ -28,7 +28,7 @@ import java.sql.ResultSet
 /**
  * Created by graemerocher on 24/02/16.
  */
-class EnumMappingSpec extends 
GrailsDataTckSpec<GrailsDataHibernate6TckManager> {
+class EnumMappingSpec extends 
GrailsDataTckSpec<GrailsDataHibernate7TckManager> {
     void setupSpec() {
         manager.addAllDomainClasses([Recipe])
     }
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/HibernateGormDatastoreSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/HibernateGormDatastoreSpec.groovy
index 34c723c753..ab0dd36c3d 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/HibernateGormDatastoreSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/HibernateGormDatastoreSpec.groovy
@@ -1,8 +1,7 @@
 package grails.gorm.specs
 
-import org.apache.grails.data.hibernate6.core.GrailsDataHibernate6TckManager
+import org.apache.grails.data.hibernate7.core.GrailsDataHibernate7TckManager
 import org.apache.grails.data.testing.tck.base.GrailsDataTckSpec
-import org.apache.grails.data.testing.tck.domains.Person
 import org.grails.datastore.mapping.model.PersistentEntity
 import org.grails.orm.hibernate.AbstractHibernateSession
 import org.grails.orm.hibernate.HibernateDatastore
@@ -10,7 +9,7 @@ import org.grails.orm.hibernate.cfg.GrailsDomainBinder
 import org.grails.orm.hibernate.cfg.HibernateMappingContext
 import org.grails.orm.hibernate.cfg.HibernatePersistentEntity
 import org.grails.orm.hibernate.query.HibernateQuery
-import org.hibernate.Session
+
 import org.hibernate.boot.MetadataSources
 import org.hibernate.boot.internal.BootstrapContextImpl
 import org.hibernate.boot.internal.InFlightMetadataCollectorImpl
@@ -30,7 +29,7 @@ import org.hibernate.service.spi.ServiceRegistryImplementor
  * Finally, it loaded all the test Entities,
  * now it can be setup individually.
  */
-class HibernateGormDatastoreSpec extends 
GrailsDataTckSpec<GrailsDataHibernate6TckManager> {
+class HibernateGormDatastoreSpec extends 
GrailsDataTckSpec<GrailsDataHibernate7TckManager> {
 
     void setupSpec() {
         manager.grailsConfig = [
@@ -107,7 +106,7 @@ class HibernateGormDatastoreSpec extends 
GrailsDataTckSpec<GrailsDataHibernate6T
         registry
                 .getParentServiceRegistry()
                 .getService(ClassLoaderService.class)
-                .loadJavaServices(MetadataContributor.class)
+                .loadJavaServices(AdditionalMappingContributor.class)
                 .find { it instanceof GrailsDomainBinder }
     }
 
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/LastUpdateWithDynamicUpdateSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/LastUpdateWithDynamicUpdateSpec.groovy
index 46bb9391ac..4d4e9595c9 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/LastUpdateWithDynamicUpdateSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/LastUpdateWithDynamicUpdateSpec.groovy
@@ -19,13 +19,13 @@
 package grails.gorm.specs
 
 import grails.gorm.annotation.Entity
-import org.apache.grails.data.hibernate6.core.GrailsDataHibernate6TckManager
+import org.apache.grails.data.hibernate7.core.GrailsDataHibernate7TckManager
 import org.apache.grails.data.testing.tck.base.GrailsDataTckSpec
 
 /**
  * Created by graemerocher on 27/06/16.
  */
-class LastUpdateWithDynamicUpdateSpec extends 
GrailsDataTckSpec<GrailsDataHibernate6TckManager> {
+class LastUpdateWithDynamicUpdateSpec extends 
GrailsDataTckSpec<GrailsDataHibernate7TckManager> {
     void setupSpec() {
         manager.addAllDomainClasses([LastUpdateTestA, LastUpdateTestB, 
LastUpdateTestC])
     }
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/ManyToOneSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/ManyToOneSpec.groovy
index ab0223a27c..29db85b7fb 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/ManyToOneSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/ManyToOneSpec.groovy
@@ -19,13 +19,13 @@
 package grails.gorm.specs
 
 import grails.gorm.annotation.Entity
-import org.apache.grails.data.hibernate6.core.GrailsDataHibernate6TckManager
+import org.apache.grails.data.hibernate7.core.GrailsDataHibernate7TckManager
 import org.apache.grails.data.testing.tck.base.GrailsDataTckSpec
 
 /**
  * Created by graemerocher on 27/06/16.
  */
-class ManyToOneSpec extends GrailsDataTckSpec<GrailsDataHibernate6TckManager> {
+class ManyToOneSpec extends GrailsDataTckSpec<GrailsDataHibernate7TckManager> {
     void setupSpec() {
         manager.addAllDomainClasses([Foo, Bar])
     }
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/MultiColumnUniqueConstraintSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/MultiColumnUniqueConstraintSpec.groovy
index 1025182d70..f169a76f6a 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/MultiColumnUniqueConstraintSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/MultiColumnUniqueConstraintSpec.groovy
@@ -19,13 +19,13 @@
 package grails.gorm.specs
 
 import grails.gorm.annotation.Entity
-import org.apache.grails.data.hibernate6.core.GrailsDataHibernate6TckManager
+import org.apache.grails.data.hibernate7.core.GrailsDataHibernate7TckManager
 import org.apache.grails.data.testing.tck.base.GrailsDataTckSpec
 import org.springframework.dao.DataIntegrityViolationException
 import spock.lang.Issue
 
 @Issue('https://github.com/grails/grails-data-mapping/issues/617')
-class MultiColumnUniqueConstraintSpec extends 
GrailsDataTckSpec<GrailsDataHibernate6TckManager> {
+class MultiColumnUniqueConstraintSpec extends 
GrailsDataTckSpec<GrailsDataHibernate7TckManager> {
     void setupSpec() {
         manager.addAllDomainClasses([DomainOne, Task1, TaskLink])
     }
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/RLikeSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/RLikeSpec.groovy
index 5ecf399d74..b5d5f04e2b 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/RLikeSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/RLikeSpec.groovy
@@ -19,12 +19,12 @@
 package grails.gorm.specs
 
 import grails.gorm.annotation.Entity
-import org.apache.grails.data.hibernate6.core.GrailsDataHibernate6TckManager
+import org.apache.grails.data.hibernate7.core.GrailsDataHibernate7TckManager
 import org.apache.grails.data.testing.tck.base.GrailsDataTckSpec
 import spock.lang.Ignore
 
 //TODO Rlike Needs to be implemented for Hibernate 6
-class RLikeSpec extends GrailsDataTckSpec<GrailsDataHibernate6TckManager> {
+class RLikeSpec extends GrailsDataTckSpec<GrailsDataHibernate7TckManager> {
     void setupSpec() {
         manager.addAllDomainClasses([RlikeFoo])
     }
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/ReadOperationSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/ReadOperationSpec.groovy
index 7d6d9b13a8..c4658d2bc0 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/ReadOperationSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/ReadOperationSpec.groovy
@@ -19,10 +19,10 @@
 package grails.gorm.specs
 
 import org.apache.grails.data.testing.tck.domains.TestEntity
-import org.apache.grails.data.hibernate6.core.GrailsDataHibernate6TckManager
+import org.apache.grails.data.hibernate7.core.GrailsDataHibernate7TckManager
 import org.apache.grails.data.testing.tck.base.GrailsDataTckSpec
 
-class ReadOperationSpec extends 
GrailsDataTckSpec<GrailsDataHibernate6TckManager> {
+class ReadOperationSpec extends 
GrailsDataTckSpec<GrailsDataHibernate7TckManager> {
     void setupSpec() {
         manager.addAllDomainClasses([TestEntity])
     }
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/SizeConstraintSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/SizeConstraintSpec.groovy
index 1baf599c9e..a8b20a0cf1 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/SizeConstraintSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/SizeConstraintSpec.groovy
@@ -19,7 +19,7 @@
 package grails.gorm.specs
 
 import grails.gorm.annotation.Entity
-import org.apache.grails.data.hibernate6.core.GrailsDataHibernate6TckManager
+import org.apache.grails.data.hibernate7.core.GrailsDataHibernate7TckManager
 import org.apache.grails.data.testing.tck.base.GrailsDataTckSpec
 import org.springframework.dao.DataIntegrityViolationException
 import spock.lang.Issue
@@ -27,7 +27,7 @@ import spock.lang.Issue
 /**
  * Created by graemerocher on 25/01/2017.
  */
-class SizeConstraintSpec extends 
GrailsDataTckSpec<GrailsDataHibernate6TckManager> {
+class SizeConstraintSpec extends 
GrailsDataTckSpec<GrailsDataHibernate7TckManager> {
     void setupSpec() {
         manager.addAllDomainClasses([SizeConstrainedUser])
     }
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/ToOneProxySpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/ToOneProxySpec.groovy
index b086966a60..4eb5d64efb 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/ToOneProxySpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/ToOneProxySpec.groovy
@@ -20,14 +20,14 @@ package grails.gorm.specs
 
 import grails.gorm.specs.entities.Club
 import grails.gorm.specs.entities.Team
-import org.apache.grails.data.hibernate6.core.GrailsDataHibernate6TckManager
+import org.apache.grails.data.hibernate7.core.GrailsDataHibernate7TckManager
 import org.apache.grails.data.testing.tck.base.GrailsDataTckSpec
 import org.grails.orm.hibernate.proxy.HibernateProxyHandler
 
 /**
  * Created by graemerocher on 16/12/16.
  */
-class ToOneProxySpec extends GrailsDataTckSpec<GrailsDataHibernate6TckManager> 
{
+class ToOneProxySpec extends GrailsDataTckSpec<GrailsDataHibernate7TckManager> 
{
     void setupSpec() {
         manager.addAllDomainClasses([Team, Club])
     }
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/WhereQueryWithAssociationSortSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/WhereQueryWithAssociationSortSpec.groovy
index 4d7e42da4b..229a8ba73f 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/WhereQueryWithAssociationSortSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/WhereQueryWithAssociationSortSpec.groovy
@@ -20,16 +20,16 @@ package grails.gorm.specs
 
 import grails.gorm.specs.entities.Club
 import grails.gorm.specs.entities.Team
-import org.apache.grails.data.hibernate6.core.GrailsDataHibernate6TckManager
+import org.apache.grails.data.hibernate7.core.GrailsDataHibernate7TckManager
 import org.apache.grails.data.testing.tck.base.GrailsDataTckSpec
-import org.hibernate.QueryException
+
 import spock.lang.Issue
 
 /**
  * Created by graemerocher on 03/11/16.
  */
 //TODO : How to create an alias inside a closure
-class WhereQueryWithAssociationSortSpec extends 
GrailsDataTckSpec<GrailsDataHibernate6TckManager> {
+class WhereQueryWithAssociationSortSpec extends 
GrailsDataTckSpec<GrailsDataHibernate7TckManager> {
     void setupSpec() {
         manager.addAllDomainClasses([Club, Team])
     }
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/WithNewSessionAndExistingTransactionSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/WithNewSessionAndExistingTransactionSpec.groovy
index 928a28d7d6..0365eb0af5 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/WithNewSessionAndExistingTransactionSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/WithNewSessionAndExistingTransactionSpec.groovy
@@ -19,7 +19,7 @@
 package grails.gorm.specs
 
 import org.apache.grails.data.testing.tck.domains.Book
-import org.apache.grails.data.hibernate6.core.GrailsDataHibernate6TckManager
+import org.apache.grails.data.hibernate7.core.GrailsDataHibernate7TckManager
 import org.apache.grails.data.testing.tck.base.GrailsDataTckSpec
 import org.grails.orm.hibernate.HibernateDatastore
 import org.hibernate.Session
@@ -33,7 +33,7 @@ import javax.sql.DataSource
 /**
  * Created by graemerocher on 26/08/2016.
  */
-class WithNewSessionAndExistingTransactionSpec extends 
GrailsDataTckSpec<GrailsDataHibernate6TckManager> {
+class WithNewSessionAndExistingTransactionSpec extends 
GrailsDataTckSpec<GrailsDataHibernate7TckManager> {
     void setupSpec() {
         manager.addAllDomainClasses([Book])
     }
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/autoimport/AutoImportSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/autoimport/AutoImportSpec.groovy
index 47fd980cbc..fecbe7fb86 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/autoimport/AutoImportSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/autoimport/AutoImportSpec.groovy
@@ -19,10 +19,10 @@
 package grails.gorm.specs.autoimport
 
 import grails.gorm.annotation.Entity
-import org.apache.grails.data.hibernate6.core.GrailsDataHibernate6TckManager
+import org.apache.grails.data.hibernate7.core.GrailsDataHibernate7TckManager
 import org.apache.grails.data.testing.tck.base.GrailsDataTckSpec
 
-class AutoImportSpec extends GrailsDataTckSpec<GrailsDataHibernate6TckManager> 
{
+class AutoImportSpec extends GrailsDataTckSpec<GrailsDataHibernate7TckManager> 
{
     void setupSpec() {
         manager.addAllDomainClasses([A, grails.gorm.specs.autoimport.other.A])
     }
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/belongsto/BidirectionalOneToOneWithUniqueSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/belongsto/BidirectionalOneToOneWithUniqueSpec.groovy
index 1ff951a138..72b242cedc 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/belongsto/BidirectionalOneToOneWithUniqueSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/belongsto/BidirectionalOneToOneWithUniqueSpec.groovy
@@ -19,13 +19,13 @@
 
 package grails.gorm.specs.belongsto
 
-import org.apache.grails.data.hibernate6.core.GrailsDataHibernate6TckManager
+import org.apache.grails.data.hibernate7.core.GrailsDataHibernate7TckManager
 import org.apache.grails.data.testing.tck.base.GrailsDataTckSpec
 
 /**
  * Created by graemerocher on 22/08/2017.
  */
-class BidirectionalOneToOneWithUniqueSpec extends 
GrailsDataTckSpec<GrailsDataHibernate6TckManager> {
+class BidirectionalOneToOneWithUniqueSpec extends 
GrailsDataTckSpec<GrailsDataHibernate7TckManager> {
     void setupSpec() {
         manager.addAllDomainClasses([HibernateFace, HibernateNose])
     }
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/inheritance/SubclassToOneProxySpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/inheritance/SubclassToOneProxySpec.groovy
index 95c21cf7d2..ecdd5455cb 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/inheritance/SubclassToOneProxySpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/inheritance/SubclassToOneProxySpec.groovy
@@ -19,10 +19,10 @@
 package grails.gorm.specs.inheritance
 
 import grails.gorm.annotation.Entity
-import org.apache.grails.data.hibernate6.core.GrailsDataHibernate6TckManager
+import org.apache.grails.data.hibernate7.core.GrailsDataHibernate7TckManager
 import org.apache.grails.data.testing.tck.base.GrailsDataTckSpec
 
-class SubclassToOneProxySpec extends 
GrailsDataTckSpec<GrailsDataHibernate6TckManager> {
+class SubclassToOneProxySpec extends 
GrailsDataTckSpec<GrailsDataHibernate7TckManager> {
     void setupSpec() {
         manager.addAllDomainClasses([SuperclassProxy, SubclassProxy, 
HasOneProxy])
     }
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/inheritance/TablePerConcreteClassAndDateCreatedSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/inheritance/TablePerConcreteClassAndDateCreatedSpec.groovy
index c7d3f42445..1104429f26 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/inheritance/TablePerConcreteClassAndDateCreatedSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/inheritance/TablePerConcreteClassAndDateCreatedSpec.groovy
@@ -19,7 +19,7 @@
 package grails.gorm.specs.inheritance
 
 import grails.gorm.annotation.Entity
-import org.apache.grails.data.hibernate6.core.GrailsDataHibernate6TckManager
+import org.apache.grails.data.hibernate7.core.GrailsDataHibernate7TckManager
 import org.apache.grails.data.testing.tck.base.GrailsDataTckSpec
 import spock.lang.Issue
 
@@ -27,7 +27,7 @@ import spock.lang.Issue
  * Created by graemerocher on 29/05/2017.
  */
 @Issue('https://github.com/grails/grails-data-mapping/issues/937')
-class TablePerConcreteClassAndDateCreatedSpec extends 
GrailsDataTckSpec<GrailsDataHibernate6TckManager> {
+class TablePerConcreteClassAndDateCreatedSpec extends 
GrailsDataTckSpec<GrailsDataHibernate7TckManager> {
     void setupSpec() {
         manager.addAllDomainClasses([Vehicle, Spaceship])
     }
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/inheritance/TablePerConcreteClassImportedSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/inheritance/TablePerConcreteClassImportedSpec.groovy
index 2cffa9c486..c71a7a133d 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/inheritance/TablePerConcreteClassImportedSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/inheritance/TablePerConcreteClassImportedSpec.groovy
@@ -18,12 +18,12 @@
  */
 package grails.gorm.specs.inheritance
 
-import org.apache.grails.data.hibernate6.core.GrailsDataHibernate6TckManager
+import org.apache.grails.data.hibernate7.core.GrailsDataHibernate7TckManager
 import org.apache.grails.data.testing.tck.base.GrailsDataTckSpec
 import spock.lang.Issue
 
 @Issue('https://github.com/grails/gorm-hibernate5/issues/151')
-class TablePerConcreteClassImportedSpec extends 
GrailsDataTckSpec<GrailsDataHibernate6TckManager> {
+class TablePerConcreteClassImportedSpec extends 
GrailsDataTckSpec<GrailsDataHibernate7TckManager> {
     void setupSpec() {
         manager.addAllDomainClasses([Vehicle, Spaceship])
     }
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/mappedby/MultipleOneToOneSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/mappedby/MultipleOneToOneSpec.groovy
index 29e2839ff2..e66728a900 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/mappedby/MultipleOneToOneSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/mappedby/MultipleOneToOneSpec.groovy
@@ -19,14 +19,14 @@
 package grails.gorm.specs.mappedby
 
 import grails.gorm.annotation.Entity
-import org.apache.grails.data.hibernate6.core.GrailsDataHibernate6TckManager
+import org.apache.grails.data.hibernate7.core.GrailsDataHibernate7TckManager
 import org.apache.grails.data.testing.tck.base.GrailsDataTckSpec
 import spock.lang.Issue
 
 /**
  * Created by graemerocher on 29/05/2017.
  */
-class MultipleOneToOneSpec extends 
GrailsDataTckSpec<GrailsDataHibernate6TckManager> {
+class MultipleOneToOneSpec extends 
GrailsDataTckSpec<GrailsDataHibernate7TckManager> {
     void setupSpec() {
         manager.addAllDomainClasses([Org, OrgMember])
     }
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/proxy/Hibernate6GroovyProxySpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/proxy/Hibernate6GroovyProxySpec.groovy
index 506f1af354..5944223f95 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/proxy/Hibernate6GroovyProxySpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/proxy/Hibernate6GroovyProxySpec.groovy
@@ -1,6 +1,6 @@
 package grails.gorm.specs.proxy
 
-import org.apache.grails.data.hibernate6.core.GrailsDataHibernate6TckManager
+import org.apache.grails.data.hibernate7.core.GrailsDataHibernate7TckManager
 import org.apache.grails.data.testing.tck.base.GrailsDataTckSpec
 import org.apache.grails.data.testing.tck.domains.Location
 import org.grails.datastore.gorm.proxy.GroovyProxyFactory
@@ -9,7 +9,7 @@ import org.grails.datastore.gorm.proxy.GroovyProxyFactory
  * @author graemerocher
  */
 //TODO Are we still supporting Proxies?
-class Hibernate6GroovyProxySpec extends 
GrailsDataTckSpec<GrailsDataHibernate6TckManager> {
+class Hibernate6GroovyProxySpec extends 
GrailsDataTckSpec<GrailsDataHibernate7TckManager> {
 
     void setupSpec() {
         manager.addAllDomainClasses([Location])
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/traits/InterfacePropertySpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/traits/InterfacePropertySpec.groovy
index 3f8269e02d..02c63d949c 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/traits/InterfacePropertySpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/traits/InterfacePropertySpec.groovy
@@ -19,14 +19,14 @@
 package grails.gorm.specs.traits
 
 import grails.gorm.annotation.Entity
-import org.apache.grails.data.hibernate6.core.GrailsDataHibernate6TckManager
+import org.apache.grails.data.hibernate7.core.GrailsDataHibernate7TckManager
 import org.apache.grails.data.testing.tck.base.GrailsDataTckSpec
 import spock.lang.Issue
 
 /**
  * Created by graemerocher on 29/05/2017.
  */
-class InterfacePropertySpec extends 
GrailsDataTckSpec<GrailsDataHibernate6TckManager> {
+class InterfacePropertySpec extends 
GrailsDataTckSpec<GrailsDataHibernate7TckManager> {
     void setupSpec() {
         manager.addAllDomainClasses([TestDomain])
     }
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/validation/DeepValidationSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/validation/DeepValidationSpec.groovy
index 66163f4078..a4ebab8091 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/validation/DeepValidationSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/grails/gorm/specs/validation/DeepValidationSpec.groovy
@@ -20,7 +20,7 @@ package grails.gorm.specs.validation
 
 import grails.gorm.annotation.Entity
 import grails.gorm.transactions.Rollback
-import org.apache.grails.data.hibernate6.core.GrailsDataHibernate6TckManager
+import org.apache.grails.data.hibernate7.core.GrailsDataHibernate7TckManager
 import org.apache.grails.data.testing.tck.base.GrailsDataTckSpec
 import org.springframework.dao.DataIntegrityViolationException
 import spock.lang.Issue
@@ -28,7 +28,7 @@ import spock.lang.Issue
 /**
  * Created by francoiskha on 19/04/18.
  */
-class DeepValidationSpec extends 
GrailsDataTckSpec<GrailsDataHibernate6TckManager> {
+class DeepValidationSpec extends 
GrailsDataTckSpec<GrailsDataHibernate7TckManager> {
     void setupSpec() {
         manager.addAllDomainClasses([AnotherCity, Market, Address])
     }
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/apache/grails/data/hibernate6/core/GrailsDataHibernate6TckManager.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/apache/grails/data/hibernate7/core/GrailsDataHibernate7TckManager.groovy
similarity index 95%
rename from 
grails-data-hibernate7/core/src/test/groovy/org/apache/grails/data/hibernate6/core/GrailsDataHibernate6TckManager.groovy
rename to 
grails-data-hibernate7/core/src/test/groovy/org/apache/grails/data/hibernate7/core/GrailsDataHibernate7TckManager.groovy
index 5d278f88bd..130e20aeff 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/apache/grails/data/hibernate6/core/GrailsDataHibernate6TckManager.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/apache/grails/data/hibernate7/core/GrailsDataHibernate7TckManager.groovy
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.grails.data.hibernate6.core
+package org.apache.grails.data.hibernate7.core
 
 import grails.core.DefaultGrailsApplication
 import grails.core.GrailsApplication
@@ -39,7 +39,7 @@ import 
org.springframework.transaction.support.DefaultTransactionDefinition
 import 
org.springframework.transaction.support.TransactionSynchronizationManager
 import spock.lang.Specification
 
-class GrailsDataHibernate6TckManager extends GrailsDataTckManager {
+class GrailsDataHibernate7TckManager extends GrailsDataTckManager {
     GrailsApplication grailsApplication
     HibernateDatastore hibernateDatastore
     org.hibernate.Session hibernateSession
@@ -59,8 +59,8 @@ class GrailsDataHibernate6TckManager extends 
GrailsDataTckManager {
 
     @Override
     Session createSession() {
-        System.setProperty('hibernate6.gorm.suite', "true")
-        grailsApplication = new DefaultGrailsApplication(domainClasses as 
Class[], new GroovyClassLoader(GrailsDataHibernate6TckManager.getClassLoader()))
+        System.setProperty('hibernate7.gorm.suite', "true")
+        grailsApplication = new DefaultGrailsApplication(domainClasses as 
Class[], new GroovyClassLoader(GrailsDataHibernate7TckManager.getClassLoader()))
         grailsConfig.dataSource.dbCreate = "create-drop"
         grailsConfig.hibernate.proxy_factory_class = 
"yakworks.hibernate.proxy.ByteBuddyGroovyProxyFactory"
         if (grailsConfig) {
diff --git 
a/grails-data-hibernate7/core/src/test/resources/META-INF/services/org.apache.grails.data.testing.tck.base.GrailsDataTckManager
 
b/grails-data-hibernate7/core/src/test/resources/META-INF/services/org.apache.grails.data.testing.tck.base.GrailsDataTckManager
index f1cca2aa38..ce171b3e54 100644
--- 
a/grails-data-hibernate7/core/src/test/resources/META-INF/services/org.apache.grails.data.testing.tck.base.GrailsDataTckManager
+++ 
b/grails-data-hibernate7/core/src/test/resources/META-INF/services/org.apache.grails.data.testing.tck.base.GrailsDataTckManager
@@ -17,4 +17,4 @@
 # under the License.
 #
 
-org.apache.grails.data.hibernate6.core.GrailsDataHibernate6TckManager
\ No newline at end of file
+org.apache.grails.data.hibernate7.core.GrailsDataHibernate7TckManager
\ No newline at end of file
diff --git 
a/grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/base/GrailsDataTckSpec.groovy
 
b/grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/base/GrailsDataTckSpec.groovy
index 9e9e22cfd4..616d3aeac4 100644
--- 
a/grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/base/GrailsDataTckSpec.groovy
+++ 
b/grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/base/GrailsDataTckSpec.groovy
@@ -29,7 +29,10 @@ class GrailsDataTckSpec<T extends GrailsDataTckManager> 
extends Specification {
 
     void setupSpec() {
         ServiceLoader<GrailsDataTckManager> loader = 
ServiceLoader.load(GrailsDataTckManager)
-        manager = loader.findFirst().get() as T
+        // Prefer a provider whose class name indicates the target suite (e.g. 
hibernate7) if available
+        def providers = loader.stream().map { it.get() }.toList()
+        def preferred = providers.find { 
it.class.name.toLowerCase().contains('hibernate7') }
+        manager = (preferred ?: providers ? providers.first() : 
loader.findFirst().get()) as T
         manager.setupSpec()
     }
 

Reply via email to