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

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

commit 3e0c3b8195ef6543559cce4da1feb8786b417643
Author: Walter Duque de Estrada <[email protected]>
AuthorDate: Sun Feb 15 19:12:19 2026 -0600

    removal of unused parameters
---
 .../orm/hibernate/cfg/GrailsDomainBinder.java      | 57 +++++++++------------
 .../binder/ClassPropertiesBinder.java              | 10 ++--
 .../cfg/domainbinding/binder/CollectionBinder.java |  8 +--
 .../cfg/domainbinding/binder/ComponentBinder.java  |  7 +--
 .../binder/ComponentPropertyBinder.java            | 11 ++--
 .../domainbinding/binder/CompositeIdBinder.java    |  4 +-
 .../domainbinding/binder/GrailsPropertyBinder.java |  8 ++-
 .../cfg/domainbinding/binder/IdentityBinder.java   |  8 +--
 .../secondpass/CollectionSecondPassBinder.java     | 11 ++--
 .../domainbinding/secondpass/ListSecondPass.java   |  6 +--
 .../secondpass/ListSecondPassBinder.java           |  5 +-
 .../domainbinding/secondpass/MapSecondPass.java    |  6 +--
 .../secondpass/MapSecondPassBinder.java            |  4 +-
 .../domainbinding/secondpass/SetSecondPass.java    |  7 +--
 .../cfg/domainbinding/CollectionBinderSpec.groovy  | 39 +++++++++++++--
 .../CollectionSecondPassBinderSpec.groovy          | 42 +++++++++++++---
 .../cfg/domainbinding/ComponentBinderSpec.groovy   |  5 +-
 .../ComponentPropertyBinderSpec.groovy             | 14 ++----
 .../cfg/domainbinding/CompositeIdBinderSpec.groovy | 10 ++--
 .../domainbinding/GrailsPropertyBinderSpec.groovy  | 58 ++++++++++++++++------
 .../cfg/domainbinding/IdentityBinderSpec.groovy    | 16 +++---
 .../domainbinding/ListSecondPassBinderSpec.groovy  | 44 +++++++++++++---
 .../domainbinding/MapSecondPassBinderSpec.groovy   | 44 +++++++++++++---
 .../binder/ClassPropertiesBinderSpec.groovy        |  6 +--
 .../collectionType/BagCollectionTypeSpec.groovy    |  2 +-
 .../collectionType/CollectionHolderSpec.groovy     |  2 +-
 .../collectionType/ListCollectionTypeSpec.groovy   |  2 +-
 .../collectionType/MapCollectionTypeSpec.groovy    |  2 +-
 .../collectionType/SetCollectionTypeSpec.groovy    |  2 +-
 .../SortedSetCollectionTypeSpec.groovy             |  2 +-
 30 files changed, 273 insertions(+), 169 deletions(-)

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 d64e6b569a..eaaaa6305b 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
@@ -14,20 +14,12 @@
  */
 package org.grails.orm.hibernate.cfg;
 
-import groovy.lang.Closure;
-
-import org.grails.datastore.mapping.model.config.GormProperties;
-import org.grails.datastore.mapping.model.types.TenantId;
 import org.grails.orm.hibernate.cfg.domainbinding.binder.ClassPropertiesBinder;
 import org.grails.orm.hibernate.cfg.domainbinding.binder.ClassBinder;
 import 
org.grails.orm.hibernate.cfg.domainbinding.binder.ColumnConfigToColumnBinder;
 import 
org.grails.orm.hibernate.cfg.domainbinding.binder.ComponentPropertyBinder;
 import org.grails.orm.hibernate.cfg.domainbinding.binder.CompositeIdBinder;
 import org.grails.orm.hibernate.cfg.domainbinding.binder.EnumTypeBinder;
-import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateManyToManyProperty;
-import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateManyToOneProperty;
-import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateOneToManyProperty;
-import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateOneToOneProperty;
 import org.grails.orm.hibernate.cfg.domainbinding.util.NamingStrategyProvider;
 import org.grails.orm.hibernate.cfg.domainbinding.util.BasicValueIdCreator;
 import org.grails.orm.hibernate.cfg.domainbinding.binder.GrailsPropertyBinder;
@@ -51,17 +43,14 @@ import 
org.grails.orm.hibernate.cfg.domainbinding.util.ColumnNameForPropertyAndP
 import 
org.grails.orm.hibernate.cfg.domainbinding.util.DefaultColumnNameFetcher;
 import org.grails.orm.hibernate.cfg.domainbinding.util.MultiTenantFilterBinder;
 import org.grails.orm.hibernate.cfg.domainbinding.util.BackticksRemover;
-import 
org.grails.orm.hibernate.cfg.domainbinding.util.ForeignKeyColumnCountCalculator;
 import org.grails.orm.hibernate.cfg.domainbinding.util.NamingStrategyWrapper;
 import 
org.grails.orm.hibernate.cfg.domainbinding.util.PropertyFromValueCreator;
 import 
org.grails.orm.hibernate.cfg.domainbinding.util.SimpleValueColumnFetcher;
 import org.grails.orm.hibernate.cfg.domainbinding.util.TableNameFetcher;
 
 import org.checkerframework.checker.nullness.qual.NonNull;
-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.spi.AdditionalMappingContributions;
@@ -69,27 +58,22 @@ import org.hibernate.boot.spi.AdditionalMappingContributor;
 import org.hibernate.boot.spi.InFlightMetadataCollector;
 import org.hibernate.boot.spi.MetadataBuildingContext;
 import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment;
-import org.hibernate.engine.spi.FilterDefinition;
 import org.hibernate.mapping.BasicValue;
 import org.hibernate.mapping.Column;
-import org.hibernate.mapping.Component;
-import org.hibernate.mapping.DependantValue;
 import org.hibernate.mapping.Formula;
 import org.hibernate.mapping.JoinedSubclass;
 import org.hibernate.mapping.PersistentClass;
-import org.hibernate.mapping.Property;
 import org.hibernate.mapping.RootClass;
 import org.hibernate.mapping.SimpleValue;
 import org.hibernate.mapping.SingleTableSubclass;
 import org.hibernate.mapping.Subclass;
 import org.hibernate.mapping.Table;
 import org.hibernate.mapping.UnionSubclass;
-import org.hibernate.metamodel.mapping.JdbcMapping;
 import org.hibernate.service.ServiceRegistry;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.Collections;
+import java.util.Collection;
 import java.util.Optional;
 
 import jakarta.annotation.Nonnull;
@@ -279,14 +263,14 @@ public class GrailsDomainBinder
             return;
         }
         var children = entity.getChildEntities(dataSourceName);
-        RootClass root = bindRootPersistentClassCommonValues(entity, children, 
mappings, sessionFactoryBeanName, identityBinder, versionBinder, classBinder, 
classPropertiesBinder);
+        RootClass root = bindRootPersistentClassCommonValues(entity, children, 
mappings, identityBinder, versionBinder, classBinder, classPropertiesBinder);
         Mapping m = entity.getMappedForm();
         final Mapping finalMapping = m;
         if (!children.isEmpty() && entity.isTablePerHierarchy()) {
             bindDiscriminatorProperty(root, m);
         }
         // bind the sub classes
-        children.forEach(sub -> bindSubClass(sub, root, mappings, 
sessionFactoryBeanName, finalMapping,mappingCacheHolder, 
defaultColumnNameFetcher, classBinder, classPropertiesBinder, 
multiTenantFilterBinder, joinedSubClassBinder, unionSubclassBinder, 
singleTableSubclassBinder));
+        children.forEach(sub -> bindSubClass(sub, root, mappings, 
finalMapping,mappingCacheHolder, defaultColumnNameFetcher, classBinder, 
classPropertiesBinder, multiTenantFilterBinder, joinedSubClassBinder, 
unionSubclassBinder, singleTableSubclassBinder));
 
         multiTenantFilterBinder.addMultiTenantFilterIfNecessary(entity, root, 
mappings, defaultColumnNameFetcher);
 
@@ -305,19 +289,17 @@ public class GrailsDomainBinder
     /**
      * Binds a sub class.
      *
-     * @param sub                    The sub domain class instance
-     * @param parent                 The parent persistent class instance
-     * @param mappings               The mappings instance
-     * @param sessionFactoryBeanName the session factory bean name
+     * @param sub                The sub domain class instance
+     * @param parent             The parent persistent class instance
+     * @param mappings           The mappings instance
      * @param mappingCacheHolder
      */
     private void bindSubClass(@Nonnull GrailsHibernatePersistentEntity sub,
                               PersistentClass parent,
                               @Nonnull InFlightMetadataCollector mappings,
-                              String sessionFactoryBeanName
-                            , Mapping m, MappingCacheHolder 
mappingCacheHolder, DefaultColumnNameFetcher defaultColumnNameFetcher, 
ClassBinder classBinder, ClassPropertiesBinder classPropertiesBinder, 
MultiTenantFilterBinder multiTenantFilterBinder, JoinedSubClassBinder 
joinedSubClassBinder, UnionSubclassBinder unionSubclassBinder, 
SingleTableSubclassBinder singleTableSubclassBinder) {
+                              Mapping m, MappingCacheHolder 
mappingCacheHolder, DefaultColumnNameFetcher defaultColumnNameFetcher, 
ClassBinder classBinder, ClassPropertiesBinder classPropertiesBinder, 
MultiTenantFilterBinder multiTenantFilterBinder, JoinedSubClassBinder 
joinedSubClassBinder, UnionSubclassBinder unionSubclassBinder, 
SingleTableSubclassBinder singleTableSubclassBinder) {
         mappingCacheHolder.cacheMapping(sub);
-        Subclass subClass = createSubclassMapping(sub, parent, mappings, 
sessionFactoryBeanName, m, defaultColumnNameFetcher, classBinder, 
classPropertiesBinder, multiTenantFilterBinder, joinedSubClassBinder, 
unionSubclassBinder, singleTableSubclassBinder);
+        Subclass subClass = createSubclassMapping(sub, parent, mappings, m, 
defaultColumnNameFetcher, classPropertiesBinder, joinedSubClassBinder, 
unionSubclassBinder, singleTableSubclassBinder);
 
 
         parent.addSubclass(subClass);
@@ -328,11 +310,19 @@ public class GrailsDomainBinder
         var children = sub.getChildEntities(dataSourceName);
         if (!children.isEmpty()) {
             // bind the sub classes
-            children.forEach(sub1 -> bindSubClass(sub1, subClass, mappings, 
sessionFactoryBeanName, m,mappingCacheHolder, defaultColumnNameFetcher, 
classBinder, classPropertiesBinder, multiTenantFilterBinder, 
joinedSubClassBinder, unionSubclassBinder, singleTableSubclassBinder ));
+            children.forEach(sub1 -> bindSubClass(sub1, subClass, mappings, 
m,mappingCacheHolder, defaultColumnNameFetcher, classBinder, 
classPropertiesBinder, multiTenantFilterBinder, joinedSubClassBinder, 
unionSubclassBinder, singleTableSubclassBinder ));
         }
     }
 
-    private @NonNull Subclass createSubclassMapping(@NonNull 
GrailsHibernatePersistentEntity subEntity, PersistentClass parent, @NonNull 
InFlightMetadataCollector mappings, String sessionFactoryBeanName, Mapping m, 
DefaultColumnNameFetcher defaultColumnNameFetcher, ClassBinder classBinder, 
ClassPropertiesBinder classPropertiesBinder, MultiTenantFilterBinder 
multiTenantFilterBinder, JoinedSubClassBinder joinedSubClassBinder, 
UnionSubclassBinder unionSubclassBinder, SingleTableSubclassBind [...]
+    private @NonNull Subclass createSubclassMapping(@NonNull 
GrailsHibernatePersistentEntity subEntity
+            , PersistentClass parent
+            , @NonNull InFlightMetadataCollector mappings
+            , Mapping m
+            , DefaultColumnNameFetcher defaultColumnNameFetcher
+            ,ClassPropertiesBinder classPropertiesBinder
+            ,JoinedSubClassBinder joinedSubClassBinder
+            , UnionSubclassBinder unionSubclassBinder
+            , SingleTableSubclassBinder singleTableSubclassBinder) {
         Subclass subClass;
         subEntity.configureDerivedProperties();
         if (!m.getTablePerHierarchy() && !m.isTablePerConcreteClass()) {
@@ -358,7 +348,7 @@ public class GrailsDomainBinder
         subClass.setAbstract(subEntity.isAbstract());
         subClass.setEntityName(subEntity.getName());
         
subClass.setJpaEntityName(GrailsHibernateUtil.unqualify(subEntity.getName()));
-        classPropertiesBinder.bindClassProperties(subEntity, subClass, 
mappings, sessionFactoryBeanName);
+        classPropertiesBinder.bindClassProperties(subEntity, subClass, 
mappings);
         return subClass;
     }
 
@@ -425,10 +415,9 @@ public class GrailsDomainBinder
      * Binds a persistent classes to the table representation and binds the 
class properties
      */
     private RootClass bindRootPersistentClassCommonValues(@Nonnull 
GrailsHibernatePersistentEntity domainClass,
-                                                       @Nonnull 
java.util.Collection<GrailsHibernatePersistentEntity> children,
+                                                       @Nonnull 
Collection<GrailsHibernatePersistentEntity> children,
                                                        @Nonnull 
InFlightMetadataCollector mappings,
-                                                       String 
sessionFactoryBeanName,
-                                                       IdentityBinder 
identityBinder,
+                                                          IdentityBinder 
identityBinder,
                                                        VersionBinder 
versionBinder,
                                                        ClassBinder classBinder,
                                                        ClassPropertiesBinder 
classPropertiesBinder
@@ -474,10 +463,10 @@ public class GrailsDomainBinder
             LOG.debug("[GrailsDomainBinder] Mapping Grails domain class: " + 
domainClass.getName() + " -> " + root.getTable().getName());
         }
 
-        identityBinder.bindIdentity(domainClass, root, mappings, gormMapping, 
sessionFactoryBeanName);
+        identityBinder.bindIdentity(domainClass, root, mappings, gormMapping);
         versionBinder.bindVersion(domainClass.getVersion(), root);
         root.createPrimaryKey();
-        classPropertiesBinder.bindClassProperties(domainClass, root, mappings, 
sessionFactoryBeanName);
+        classPropertiesBinder.bindClassProperties(domainClass, root, mappings);
 
         return root;
     }
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ClassPropertiesBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ClassPropertiesBinder.java
index f8f32804c4..c46f43f44d 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ClassPropertiesBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ClassPropertiesBinder.java
@@ -36,18 +36,16 @@ public class ClassPropertiesBinder {
     /**
      * Binds the properties of the specified Grails domain class to the 
Hibernate meta-model.
      *
-     * @param domainClass The Grails domain class
+     * @param domainClass     The Grails domain class
      * @param persistentClass The Hibernate PersistentClass instance
-     * @param mappings The Hibernate InFlightMetadataCollector instance
-     * @param sessionFactoryBeanName The session factory bean name
+     * @param mappings        The Hibernate InFlightMetadataCollector instance
      */
     public void bindClassProperties(@Nonnull GrailsHibernatePersistentEntity 
domainClass,
                                     PersistentClass persistentClass,
-                                    @Nonnull InFlightMetadataCollector 
mappings,
-                                    String sessionFactoryBeanName) {
+                                    @Nonnull InFlightMetadataCollector 
mappings) {
 
         for (GrailsHibernatePersistentProperty currentGrailsProp : 
domainClass.getPersistentPropertiesToBind()) {
-            Value value = grailsPropertyBinder.bindProperty(persistentClass, 
currentGrailsProp, mappings, sessionFactoryBeanName);
+            Value value = grailsPropertyBinder.bindProperty(persistentClass, 
currentGrailsProp, mappings);
             
persistentClass.addProperty(propertyFromValueCreator.createProperty(value, 
currentGrailsProp));
         }
 
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/CollectionBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/CollectionBinder.java
index 88624ae4ed..9756629345 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/CollectionBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/CollectionBinder.java
@@ -88,7 +88,7 @@ public class CollectionBinder {
      * @param path       The property path
      */
     public void bindCollection(HibernateToManyProperty property, Collection 
collection,
-                               PersistentClass owner, @Nonnull 
InFlightMetadataCollector mappings, String path, String sessionFactoryBeanName) 
{
+                               PersistentClass owner, @Nonnull 
InFlightMetadataCollector mappings, String path) {
 
         // set role
         String propertyName = getNameForPropertyAndPath(property, path);
@@ -133,13 +133,13 @@ public class CollectionBinder {
 
         // set up second pass
        if (collection instanceof org.hibernate.mapping.List) {
-            mappings.addSecondPass(new ListSecondPass(listSecondPassBinder, 
property, mappings, collection, sessionFactoryBeanName));
+            mappings.addSecondPass(new ListSecondPass(listSecondPassBinder, 
property, mappings, collection));
         }
         else if (collection instanceof org.hibernate.mapping.Map) {
-            mappings.addSecondPass(new MapSecondPass(mapSecondPassBinder, 
property, mappings, collection, sessionFactoryBeanName));
+            mappings.addSecondPass(new MapSecondPass(mapSecondPassBinder, 
property, mappings, collection));
         }
         else { // Collection -> Bag
-            mappings.addSecondPass(new 
SetSecondPass(collectionSecondPassBinder,  property, mappings, collection, 
sessionFactoryBeanName));
+            mappings.addSecondPass(new 
SetSecondPass(collectionSecondPassBinder,  property, mappings, collection));
         }
     }
 
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ComponentBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ComponentBinder.java
index b507f5ac70..560ed648cd 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ComponentBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ComponentBinder.java
@@ -1,13 +1,10 @@
 package org.grails.orm.hibernate.cfg.domainbinding.binder;
 
-import java.util.List;
-
 import org.hibernate.boot.spi.InFlightMetadataCollector;
 import org.hibernate.mapping.Component;
 import org.hibernate.mapping.PersistentClass;
 import org.hibernate.mapping.Table;
 
-import org.grails.datastore.mapping.model.PersistentProperty;
 import org.grails.datastore.mapping.model.config.GormProperties;
 import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentEntity;
 import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentProperty;
@@ -33,7 +30,7 @@ public class ComponentBinder {
     }
 
     public void bindComponent(Component component, HibernateEmbeddedProperty 
property,
-                              @Nonnull InFlightMetadataCollector mappings, 
String sessionFactoryBeanName) {
+                              @Nonnull InFlightMetadataCollector mappings) {
         Class<?> type = property.getType();
         String role = GrailsHibernateUtil.qualify(type.getName(), 
property.getName());
         component.setRoleName(role);
@@ -55,7 +52,7 @@ public class ComponentBinder {
                 component.setParentProperty(currentGrailsProp.getName());
                 continue;
             }
-            componentPropertyBinder.bindComponentProperty(component, property, 
currentGrailsProp, persistentClass, path, table, mappings, 
sessionFactoryBeanName);
+            componentPropertyBinder.bindComponentProperty(component, property, 
currentGrailsProp, persistentClass, path, table, mappings);
         }
     }
 }
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ComponentPropertyBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ComponentPropertyBinder.java
index 5a9fbde104..bb4e015575 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ComponentPropertyBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ComponentPropertyBinder.java
@@ -119,15 +119,14 @@ public class ComponentPropertyBinder {
                                       PersistentClass persistentClass,
                                        String path,
                                       Table table,
-                                      @Nonnull InFlightMetadataCollector 
mappings,
-                                      String sessionFactoryBeanName) {
+                                      @Nonnull InFlightMetadataCollector 
mappings) {
         Value value;
         // see if it's a collection type
         CollectionType collectionType = 
collectionHolder.get(currentGrailsProp.getType());
         if (collectionType != null) {
             // create collection
             Collection collection = 
collectionType.create((HibernateToManyProperty) currentGrailsProp, 
persistentClass);
-            collectionBinder.bindCollection((HibernateToManyProperty) 
currentGrailsProp, collection, persistentClass, mappings, path, 
sessionFactoryBeanName);
+            collectionBinder.bindCollection((HibernateToManyProperty) 
currentGrailsProp, collection, persistentClass, mappings, path);
             mappings.addCollectionBinding(collection);
             value = collection;
         }
@@ -153,7 +152,7 @@ public class ComponentPropertyBinder {
         }
         else if (currentGrailsProp instanceof HibernateEmbeddedProperty 
embedded) {
             value = new Component(metadataBuildingContext, persistentClass);
-            componentBinder.bindComponent((Component) value, embedded, 
mappings, sessionFactoryBeanName);
+            componentBinder.bindComponent((Component) value, embedded, 
mappings);
         }
         else {
             if (LOG.isDebugEnabled())
@@ -182,7 +181,7 @@ public class ComponentPropertyBinder {
     }
 
     public void bindComponent(Component component, HibernateEmbeddedProperty 
property,
-                               boolean isNullable, @Nonnull 
InFlightMetadataCollector mappings, String sessionFactoryBeanName) {
-        componentBinder.bindComponent(component, property, mappings, 
sessionFactoryBeanName);
+                               boolean isNullable, @Nonnull 
InFlightMetadataCollector mappings) {
+        componentBinder.bindComponent(component, property, mappings);
     }
 }
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/CompositeIdBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/CompositeIdBinder.java
index f030bf0847..048715a1ad 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/CompositeIdBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/CompositeIdBinder.java
@@ -25,7 +25,7 @@ public class CompositeIdBinder {
 
 
     public void bindCompositeId(@Nonnull GrailsHibernatePersistentEntity 
domainClass, RootClass root,
-                                 CompositeIdentity compositeIdentity, @Nonnull 
InFlightMetadataCollector mappings, String sessionFactoryBeanName) {
+                                 CompositeIdentity compositeIdentity, @Nonnull 
InFlightMetadataCollector mappings) {
         Component id = new Component(metadataBuildingContext, root);
         id.setNullValue("undefined");
         root.setIdentifier(id);
@@ -61,7 +61,7 @@ public class CompositeIdBinder {
                         "] is not a valid property!");
             }
 
-            componentPropertyBinder.bindComponentProperty(id, identifierProp, 
property, root, "", root.getTable(), mappings, sessionFactoryBeanName);
+            componentPropertyBinder.bindComponentProperty(id, identifierProp, 
property, root, "", root.getTable(), mappings);
         }
     }
 }
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/GrailsPropertyBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/GrailsPropertyBinder.java
index 0c407946db..82a678f698 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/GrailsPropertyBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/GrailsPropertyBinder.java
@@ -2,7 +2,6 @@ package org.grails.orm.hibernate.cfg.domainbinding.binder;
 
 import jakarta.annotation.Nonnull;
 import org.grails.datastore.mapping.model.types.Association;
-import org.grails.datastore.mapping.model.types.Embedded;
 import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentProperty;
 import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateEmbeddedProperty;
 import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateToManyProperty;
@@ -94,8 +93,7 @@ public class GrailsPropertyBinder {
 
     public Value bindProperty(PersistentClass persistentClass
             , @Nonnull GrailsHibernatePersistentProperty currentGrailsProp
-            , @Nonnull InFlightMetadataCollector mappings
-            , String sessionFactoryBeanName) {
+            , @Nonnull InFlightMetadataCollector mappings) {
         if (LOG.isDebugEnabled()) {
             LOG.debug("[GrailsPropertyBinder] Binding persistent property [" + 
currentGrailsProp.getName() + "]");
         }
@@ -121,7 +119,7 @@ public class GrailsPropertyBinder {
             }
             else { // Actual Collection
                 Collection collection = 
collectionType.create((HibernateToManyProperty) currentGrailsProp, 
persistentClass);
-                collectionBinder.bindCollection((HibernateToManyProperty) 
currentGrailsProp, collection, persistentClass, mappings, EMPTY_PATH, 
sessionFactoryBeanName);
+                collectionBinder.bindCollection((HibernateToManyProperty) 
currentGrailsProp, collection, persistentClass, mappings, EMPTY_PATH);
                 mappings.addCollectionBinding(collection);
                 value = collection;
             }
@@ -141,7 +139,7 @@ public class GrailsPropertyBinder {
         }
         else if (currentGrailsProp instanceof HibernateEmbeddedProperty 
embedded) {
             value = new Component(metadataBuildingContext, persistentClass);
-            componentPropertyBinder.bindComponent((Component)value, embedded, 
true, mappings, sessionFactoryBeanName);
+            componentPropertyBinder.bindComponent((Component)value, embedded, 
true, mappings);
         }
         // work out what type of relationship it is and bind value
         else { // Default BasicValue
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/IdentityBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/IdentityBinder.java
index 2c3e081695..16ae1327f0 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/IdentityBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/IdentityBinder.java
@@ -1,8 +1,6 @@
 package org.grails.orm.hibernate.cfg.domainbinding.binder;
 
 import org.hibernate.boot.spi.InFlightMetadataCollector;
-import org.hibernate.boot.spi.MetadataBuildingContext;
-import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment;
 import org.hibernate.mapping.RootClass;
 
 import org.grails.orm.hibernate.cfg.CompositeIdentity;
@@ -10,7 +8,6 @@ import 
org.grails.orm.hibernate.cfg.GrailsHibernatePersistentEntity;
 import org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateIdentity;
 import org.grails.orm.hibernate.cfg.Identity;
 import org.grails.orm.hibernate.cfg.Mapping;
-import org.grails.orm.hibernate.cfg.PersistentEntityNamingStrategy;
 
 import jakarta.annotation.Nonnull;
 
@@ -29,12 +26,11 @@ public class IdentityBinder {
             @Nonnull GrailsHibernatePersistentEntity domainClass,
             RootClass root,
             @Nonnull InFlightMetadataCollector mappings,
-            Mapping gormMapping,
-            String sessionFactoryBeanName) {
+            Mapping gormMapping) {
 
         HibernateIdentity id = gormMapping != null ? gormMapping.getIdentity() 
: null;
         if (id instanceof CompositeIdentity || (id == null && 
domainClass.getCompositeIdentity() != null)) {
-            compositeIdBinder.bindCompositeId(domainClass, root, 
(CompositeIdentity) id, mappings, sessionFactoryBeanName);
+            compositeIdBinder.bindCompositeId(domainClass, root, 
(CompositeIdentity) id, mappings);
         } else {
             Identity identity = id instanceof Identity ? (Identity) id : null;
             if (identity != null && identity.getName() == null) {
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/CollectionSecondPassBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/CollectionSecondPassBinder.java
index b2e1ee3785..84bffa8bb3 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/CollectionSecondPassBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/CollectionSecondPassBinder.java
@@ -2,7 +2,6 @@ package org.grails.orm.hibernate.cfg.domainbinding.secondpass;
 
 import jakarta.annotation.Nonnull;
 import org.grails.datastore.mapping.model.DatastoreConfigurationException;
-import org.grails.datastore.mapping.model.PersistentProperty;
 import org.grails.datastore.mapping.model.config.GormProperties;
 import org.grails.datastore.mapping.model.types.Association;
 import org.grails.datastore.mapping.model.types.Basic;
@@ -35,6 +34,7 @@ import org.slf4j.LoggerFactory;
 import org.springframework.util.StringUtils;
 
 import java.util.*;
+import java.util.Map;
 import java.util.Set;
 
 import static org.grails.orm.hibernate.cfg.GrailsDomainBinder.*;
@@ -89,7 +89,7 @@ public class CollectionSecondPassBinder {
 
 
     public void bindCollectionSecondPass(HibernateToManyProperty property, 
@Nonnull InFlightMetadataCollector mappings,
-                                         java.util.Map<?, ?> 
persistentClasses, Collection collection, String sessionFactoryBeanName) {
+                                         Map<?, ?> persistentClasses, 
Collection collection) {
         PersistentClass associatedClass = null;
 
         if (LOG.isDebugEnabled())
@@ -179,7 +179,7 @@ public class CollectionSecondPassBinder {
 
             } else if ((otherSide instanceof HibernateManyToManyProperty) || 
java.util.Map.class.isAssignableFrom(property.getType())) {
 
-                bindDependentKeyValue(property, key, mappings, 
sessionFactoryBeanName);
+                bindDependentKeyValue(property, key);
 
             }
 
@@ -193,7 +193,7 @@ public class CollectionSecondPassBinder {
 
             } else {
 
-                bindDependentKeyValue(property, key, mappings, 
sessionFactoryBeanName);
+                bindDependentKeyValue(property, key);
 
             }
 
@@ -377,8 +377,7 @@ public class CollectionSecondPassBinder {
         element.setReferencedEntityName(property.getOwner().getName());
     }
 
-    private void bindDependentKeyValue(GrailsHibernatePersistentProperty 
property, DependantValue key,
-                                       @Nonnull InFlightMetadataCollector 
mappings, String sessionFactoryBeanName) {
+    private void bindDependentKeyValue(GrailsHibernatePersistentProperty 
property, DependantValue key) {
 
         if (LOG.isDebugEnabled()) {
             LOG.debug("[CollectionSecondPassBinder] binding  [" + 
property.getName() + "] with dependant key");
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/ListSecondPass.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/ListSecondPass.java
index ba6ad08a45..0058b1d52b 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/ListSecondPass.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/ListSecondPass.java
@@ -19,15 +19,13 @@ public class ListSecondPass implements 
org.hibernate.boot.spi.SecondPass, Grails
     protected final HibernateToManyProperty property;
     protected final @Nonnull InFlightMetadataCollector mappings;
     protected final Collection collection;
-    protected final String sessionFactoryBeanName;
 
     public ListSecondPass(ListSecondPassBinder listSecondPassBinder, 
HibernateToManyProperty property, @Nonnull InFlightMetadataCollector mappings,
-                          Collection coll, String sessionFactoryBeanName) {
+                          Collection coll) {
         this.listSecondPassBinder = listSecondPassBinder;
         this.property = property;
         this.mappings = mappings;
         this.collection = coll;
-        this.sessionFactoryBeanName = sessionFactoryBeanName;
     }
 
 
@@ -35,7 +33,7 @@ public class ListSecondPass implements 
org.hibernate.boot.spi.SecondPass, Grails
     @Override
     public void doSecondPass(Map persistentClasses) throws MappingException {
         listSecondPassBinder.bindListSecondPass(property, mappings, 
persistentClasses,
-                (org.hibernate.mapping.List) collection, 
sessionFactoryBeanName);
+                (org.hibernate.mapping.List) collection);
         createCollectionKeys(collection);
     }
 
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/ListSecondPassBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/ListSecondPassBinder.java
index c9eed1ffee..85f5d08d33 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/ListSecondPassBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/ListSecondPassBinder.java
@@ -16,6 +16,7 @@ import org.hibernate.mapping.Backref;
 import org.hibernate.mapping.BasicValue;
 import org.hibernate.mapping.DependantValue;
 import org.hibernate.mapping.IndexBackref;
+import org.hibernate.mapping.List;
 import org.hibernate.mapping.ManyToOne;
 import org.hibernate.mapping.OneToMany;
 import org.hibernate.mapping.PersistentClass;
@@ -44,9 +45,9 @@ public class ListSecondPassBinder {
     }
 
     public void bindListSecondPass(HibernateToManyProperty property, @Nonnull 
InFlightMetadataCollector mappings,
-                                   Map<?, ?> persistentClasses, 
org.hibernate.mapping.List list, String sessionFactoryBeanName) {
+                                   Map<?, ?> persistentClasses, List list) {
 
-        collectionSecondPassBinder.bindCollectionSecondPass(property, 
mappings, persistentClasses, list, sessionFactoryBeanName);
+        collectionSecondPassBinder.bindCollectionSecondPass(property, 
mappings, persistentClasses, list);
         String columnName = property.getIndexColumnName(namingStrategy);
         final boolean isManyToMany = property instanceof 
HibernateManyToManyProperty;
 
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/MapSecondPass.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/MapSecondPass.java
index d6e1a987de..7574c35a7f 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/MapSecondPass.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/MapSecondPass.java
@@ -19,15 +19,13 @@ public class MapSecondPass implements 
org.hibernate.boot.spi.SecondPass, GrailsS
     protected final HibernateToManyProperty property;
     protected final @Nonnull InFlightMetadataCollector mappings;
     protected final Collection collection;
-    protected final String sessionFactoryBeanName;
 
     public MapSecondPass(MapSecondPassBinder mapSecondPassBinder, 
HibernateToManyProperty property, @Nonnull InFlightMetadataCollector mappings,
-                         Collection coll, String sessionFactoryBeanName) {
+                         Collection coll) {
         this.mapSecondPassBinder = mapSecondPassBinder;
         this.property = property;
         this.mappings = mappings;
         this.collection = coll;
-        this.sessionFactoryBeanName = sessionFactoryBeanName;
     }
 
 
@@ -36,7 +34,7 @@ public class MapSecondPass implements 
org.hibernate.boot.spi.SecondPass, GrailsS
     @Override
     public void doSecondPass(Map persistentClasses) throws MappingException {
         mapSecondPassBinder.bindMapSecondPass(property, mappings, 
persistentClasses,
-                (org.hibernate.mapping.Map) collection, 
sessionFactoryBeanName);
+                (org.hibernate.mapping.Map) collection);
         createCollectionKeys(collection);
     }
 
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/MapSecondPassBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/MapSecondPassBinder.java
index 4a599afd2c..ab462f3242 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/MapSecondPassBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/MapSecondPassBinder.java
@@ -42,8 +42,8 @@ public class MapSecondPassBinder {
     }
 
     public void bindMapSecondPass(HibernateToManyProperty property, @Nonnull 
InFlightMetadataCollector mappings,
-                                  Map<?, ?> persistentClasses, 
org.hibernate.mapping.Map map, String sessionFactoryBeanName) {
-        collectionSecondPassBinder.bindCollectionSecondPass(property, 
mappings, persistentClasses, map, sessionFactoryBeanName);
+                                  Map<?, ?> persistentClasses, 
org.hibernate.mapping.Map map) {
+        collectionSecondPassBinder.bindCollectionSecondPass(property, 
mappings, persistentClasses, map);
         SimpleValue value = new BasicValue(metadataBuildingContext, 
map.getCollectionTable());
 
         String type = ((GrailsHibernatePersistentProperty) 
property).getIndexColumnType("string");
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/SetSecondPass.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/SetSecondPass.java
index b3c7c5416c..485152b9ef 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/SetSecondPass.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/SetSecondPass.java
@@ -27,25 +27,22 @@ public class SetSecondPass implements 
org.hibernate.boot.spi.SecondPass, GrailsS
     protected final HibernateToManyProperty property;
     protected final @Nonnull InFlightMetadataCollector mappings;
     protected final Collection collection;
-    protected final String sessionFactoryBeanName;
 
     public SetSecondPass(CollectionSecondPassBinder collectionSecondPassBinder,
                          HibernateToManyProperty property,
                          @Nonnull InFlightMetadataCollector mappings,
-                         Collection coll,
-                         String sessionFactoryBeanName) {
+                         Collection coll) {
         this.collectionSecondPassBinder = collectionSecondPassBinder;
         this.property = property;
         this.mappings = mappings;
         this.collection = coll;
-        this.sessionFactoryBeanName = sessionFactoryBeanName;
 
     }
 
 
     @SuppressWarnings("rawtypes")
     public void doSecondPass(Map persistentClasses) throws MappingException {
-        collectionSecondPassBinder.bindCollectionSecondPass(property, 
mappings, persistentClasses, collection, sessionFactoryBeanName);
+        collectionSecondPassBinder.bindCollectionSecondPass(property, 
mappings, persistentClasses, collection);
         createCollectionKeys(collection);
     }
 }
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/CollectionBinderSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/CollectionBinderSpec.groovy
index 9f8b6969c4..b4219bea59 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/CollectionBinderSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/CollectionBinderSpec.groovy
@@ -37,6 +37,12 @@ import 
org.grails.orm.hibernate.cfg.domainbinding.util.PropertyFromValueCreator
 import 
org.grails.orm.hibernate.cfg.domainbinding.binder.ComponentPropertyBinder
 import org.grails.orm.hibernate.cfg.domainbinding.util.BasicValueIdCreator
 
+import org.grails.orm.hibernate.cfg.domainbinding.binder.ClassPropertiesBinder
+import org.grails.orm.hibernate.cfg.domainbinding.util.MultiTenantFilterBinder
+import org.grails.orm.hibernate.cfg.domainbinding.binder.JoinedSubClassBinder
+import org.grails.orm.hibernate.cfg.domainbinding.binder.UnionSubclassBinder
+import 
org.grails.orm.hibernate.cfg.domainbinding.binder.SingleTableSubclassBinder
+
 class CollectionBinderSpec extends HibernateGormDatastoreSpec {
 
     protected Map getBinders(GrailsDomainBinder binder) {
@@ -71,6 +77,7 @@ class CollectionBinderSpec extends HibernateGormDatastoreSpec 
{
                 compositeIdentifierToManyToOneBinder,
                 simpleValueColumnFetcher
         )
+        PropertyFromValueCreator propertyFromValueCreator = new 
PropertyFromValueCreator()
         ComponentPropertyBinder componentPropertyBinder = new 
ComponentPropertyBinder(
                 metadataBuildingContext,
                 namingStrategy,
@@ -79,7 +86,7 @@ class CollectionBinderSpec extends HibernateGormDatastoreSpec 
{
                 collectionHolder,
                 enumTypeBinderToUse,
                 collectionBinder,
-                new PropertyFromValueCreator(),
+                propertyFromValueCreator,
                 null,
                 simpleValueBinder,
                 oneToOneBinder,
@@ -97,7 +104,7 @@ class CollectionBinderSpec extends 
HibernateGormDatastoreSpec {
                 columnNameForPropertyAndPathFetcher,
                 oneToOneBinder,
                 manyToOneBinder,
-                new PropertyFromValueCreator()
+                propertyFromValueCreator
         )
         CompositeIdBinder compositeIdBinder = new 
CompositeIdBinder(metadataBuildingContext, componentPropertyBinder)
         PropertyBinder propertyBinderHelper = new PropertyBinder()
@@ -105,19 +112,41 @@ class CollectionBinderSpec extends 
HibernateGormDatastoreSpec {
         IdentityBinder identityBinder = new IdentityBinder(simpleIdBinder, 
compositeIdBinder)
         VersionBinder versionBinder = new 
VersionBinder(metadataBuildingContext, simpleValueBinder, propertyBinderHelper, 
BasicValue::new)
 
+        ClassBinder classBinder = new ClassBinder()
+        ClassPropertiesBinder classPropertiesBinder = new 
ClassPropertiesBinder(propertyBinder, propertyFromValueCreator)
+        MultiTenantFilterBinder multiTenantFilterBinder = new 
MultiTenantFilterBinder()
+        JoinedSubClassBinder joinedSubClassBinder = new 
JoinedSubClassBinder(metadataBuildingContext, namingStrategy, new 
org.grails.orm.hibernate.cfg.domainbinding.binder.SimpleValueColumnBinder(), 
columnNameForPropertyAndPathFetcher, classBinder)
+        UnionSubclassBinder unionSubclassBinder = new 
UnionSubclassBinder(metadataBuildingContext, namingStrategy, classBinder)
+        SingleTableSubclassBinder singleTableSubclassBinder = new 
SingleTableSubclassBinder(classBinder)
+
         return [
             propertyBinder: propertyBinder,
             collectionBinder: collectionBinder,
             identityBinder: identityBinder,
             versionBinder: versionBinder,
             defaultColumnNameFetcher: defaultColumnNameFetcher,
-            columnNameForPropertyAndPathFetcher: 
columnNameForPropertyAndPathFetcher
+            columnNameForPropertyAndPathFetcher: 
columnNameForPropertyAndPathFetcher,
+            classBinder: classBinder,
+            classPropertiesBinder: classPropertiesBinder,
+            multiTenantFilterBinder: multiTenantFilterBinder,
+            joinedSubClassBinder: joinedSubClassBinder,
+            unionSubclassBinder: unionSubclassBinder,
+            singleTableSubclassBinder: singleTableSubclassBinder
         ]
     }
 
     protected void bindRoot(GrailsDomainBinder binder, 
GrailsHibernatePersistentEntity entity, InFlightMetadataCollector mappings, 
String sessionFactoryBeanName) {
         def binders = getBinders(binder)
-        binder.bindRoot(entity, mappings, sessionFactoryBeanName, 
binders.defaultColumnNameFetcher, binders.columnNameForPropertyAndPathFetcher, 
binders.identityBinder as IdentityBinder, binders.versionBinder as 
VersionBinder, binders.propertyBinder as GrailsPropertyBinder, new 
ClassBinder(), new PropertyFromValueCreator())
+        binder.bindRoot(entity, mappings, sessionFactoryBeanName, 
+            binders.defaultColumnNameFetcher, 
+            binders.identityBinder as IdentityBinder, 
+            binders.versionBinder as VersionBinder, 
+            binders.classBinder as ClassBinder, 
+            binders.classPropertiesBinder as ClassPropertiesBinder, 
+            binders.multiTenantFilterBinder as MultiTenantFilterBinder, 
+            binders.joinedSubClassBinder as JoinedSubClassBinder, 
+            binders.unionSubclassBinder as UnionSubclassBinder, 
+            binders.singleTableSubclassBinder as SingleTableSubclassBinder)
     }
 
     void setupSpec() {
@@ -145,7 +174,7 @@ class CollectionBinderSpec extends 
HibernateGormDatastoreSpec {
         def collection = new Set(binder.getMetadataBuildingContext(), 
rootClass)
 
         when:
-        collectionBinder.bindCollection(petsProp, collection, rootClass, 
collector, "", "sessionFactory")
+        collectionBinder.bindCollection(petsProp, collection, rootClass, 
collector, "")
 
         then:
         collection.role == "${personEntity.name}.pets".toString()
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/CollectionSecondPassBinderSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/CollectionSecondPassBinderSpec.groovy
index 5c4163b15f..28f3f8b16e 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/CollectionSecondPassBinderSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/CollectionSecondPassBinderSpec.groovy
@@ -39,6 +39,12 @@ import 
org.grails.orm.hibernate.cfg.domainbinding.binder.PropertyBinder
 import org.grails.orm.hibernate.cfg.domainbinding.util.PropertyFromValueCreator
 import org.hibernate.mapping.BasicValue
 
+import org.grails.orm.hibernate.cfg.domainbinding.binder.ClassPropertiesBinder
+import org.grails.orm.hibernate.cfg.domainbinding.util.MultiTenantFilterBinder
+import org.grails.orm.hibernate.cfg.domainbinding.binder.JoinedSubClassBinder
+import org.grails.orm.hibernate.cfg.domainbinding.binder.UnionSubclassBinder
+import 
org.grails.orm.hibernate.cfg.domainbinding.binder.SingleTableSubclassBinder
+
 class CollectionSecondPassBinderSpec extends HibernateGormDatastoreSpec {
 
     protected Map getBinders(GrailsDomainBinder binder) {
@@ -73,6 +79,7 @@ class CollectionSecondPassBinderSpec extends 
HibernateGormDatastoreSpec {
                 compositeIdentifierToManyToOneBinder,
                 simpleValueColumnFetcher
         )
+        PropertyFromValueCreator propertyFromValueCreator = new 
PropertyFromValueCreator()
         ComponentPropertyBinder componentPropertyBinder = new 
ComponentPropertyBinder(
                 metadataBuildingContext,
                 namingStrategy,
@@ -81,7 +88,7 @@ class CollectionSecondPassBinderSpec extends 
HibernateGormDatastoreSpec {
                 collectionHolder,
                 enumTypeBinderToUse,
                 collectionBinder,
-                new PropertyFromValueCreator(),
+                propertyFromValueCreator,
                 null,
                 simpleValueBinder,
                 oneToOneBinder,
@@ -99,7 +106,7 @@ class CollectionSecondPassBinderSpec extends 
HibernateGormDatastoreSpec {
                 columnNameForPropertyAndPathFetcher,
                 oneToOneBinder,
                 manyToOneBinder,
-                new PropertyFromValueCreator()
+                propertyFromValueCreator
         )
         CompositeIdBinder compositeIdBinder = new 
CompositeIdBinder(metadataBuildingContext, componentPropertyBinder)
         PropertyBinder propertyBinderHelper = new PropertyBinder()
@@ -107,21 +114,42 @@ class CollectionSecondPassBinderSpec extends 
HibernateGormDatastoreSpec {
         IdentityBinder identityBinder = new IdentityBinder(simpleIdBinder, 
compositeIdBinder)
         VersionBinder versionBinder = new 
VersionBinder(metadataBuildingContext, simpleValueBinder, propertyBinderHelper, 
BasicValue::new)
 
+        ClassBinder classBinder = new ClassBinder()
+        ClassPropertiesBinder classPropertiesBinder = new 
ClassPropertiesBinder(propertyBinder, propertyFromValueCreator)
+        MultiTenantFilterBinder multiTenantFilterBinder = new 
MultiTenantFilterBinder()
+        JoinedSubClassBinder joinedSubClassBinder = new 
JoinedSubClassBinder(metadataBuildingContext, namingStrategy, new 
org.grails.orm.hibernate.cfg.domainbinding.binder.SimpleValueColumnBinder(), 
columnNameForPropertyAndPathFetcher, classBinder)
+        UnionSubclassBinder unionSubclassBinder = new 
UnionSubclassBinder(metadataBuildingContext, namingStrategy, classBinder)
+        SingleTableSubclassBinder singleTableSubclassBinder = new 
SingleTableSubclassBinder(classBinder)
+
         return [
             propertyBinder: propertyBinder,
             collectionBinder: collectionBinder,
             identityBinder: identityBinder,
             versionBinder: versionBinder,
             defaultColumnNameFetcher: defaultColumnNameFetcher,
-            columnNameForPropertyAndPathFetcher: 
columnNameForPropertyAndPathFetcher
+            columnNameForPropertyAndPathFetcher: 
columnNameForPropertyAndPathFetcher,
+            classBinder: classBinder,
+            classPropertiesBinder: classPropertiesBinder,
+            multiTenantFilterBinder: multiTenantFilterBinder,
+            joinedSubClassBinder: joinedSubClassBinder,
+            unionSubclassBinder: unionSubclassBinder,
+            singleTableSubclassBinder: singleTableSubclassBinder
         ]
     }
 
     protected void bindRoot(GrailsDomainBinder binder, 
GrailsHibernatePersistentEntity entity, InFlightMetadataCollector mappings, 
String sessionFactoryBeanName) {
         def binders = getBinders(binder)
-        binder.bindRoot(entity, mappings, sessionFactoryBeanName, 
binders.defaultColumnNameFetcher, binders.columnNameForPropertyAndPathFetcher, 
binders.identityBinder as IdentityBinder, binders.versionBinder as 
VersionBinder, binders.propertyBinder as GrailsPropertyBinder, new 
ClassBinder(), new PropertyFromValueCreator())
+        binder.bindRoot(entity, mappings, sessionFactoryBeanName, 
+            binders.defaultColumnNameFetcher, 
+            binders.identityBinder as IdentityBinder, 
+            binders.versionBinder as VersionBinder, 
+            binders.classBinder as ClassBinder, 
+            binders.classPropertiesBinder as ClassPropertiesBinder, 
+            binders.multiTenantFilterBinder as MultiTenantFilterBinder, 
+            binders.joinedSubClassBinder as JoinedSubClassBinder, 
+            binders.unionSubclassBinder as UnionSubclassBinder, 
+            binders.singleTableSubclassBinder as SingleTableSubclassBinder)
     }
-
     void setupSpec() {
         manager.addAllDomainClasses([
                 Author,
@@ -173,7 +201,7 @@ class CollectionSecondPassBinderSpec extends 
HibernateGormDatastoreSpec {
         set.setRole(authorEntity.name + ".books")
         
         // Initial first pass binding
-        collectionBinder.bindCollection(booksProp, set, rootClass, collector, 
"", "sessionFactory")
+        collectionBinder.bindCollection(booksProp, set, rootClass, collector, 
"")
 
         // Prepare persistentClasses map
         Map persistentClasses = [
@@ -182,7 +210,7 @@ class CollectionSecondPassBinderSpec extends 
HibernateGormDatastoreSpec {
         ]
 
         when:
-        collectionSecondPassBinder.bindCollectionSecondPass(booksProp, 
collector, persistentClasses, set, "sessionFactory")
+        collectionSecondPassBinder.bindCollectionSecondPass(booksProp, 
collector, persistentClasses, set)
         collector.processSecondPasses(binder.getMetadataBuildingContext())
 
         then:
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ComponentBinderSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ComponentBinderSpec.groovy
index abeb1d5d76..05ae419043 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ComponentBinderSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ComponentBinderSpec.groovy
@@ -1,7 +1,6 @@
 package org.grails.orm.hibernate.cfg.domainbinding
 
 import grails.gorm.specs.HibernateGormDatastoreSpec
-import org.grails.datastore.mapping.model.PersistentProperty
 import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentProperty
 import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateEmbeddedProperty
 import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentEntity
@@ -53,13 +52,13 @@ class ComponentBinderSpec extends 
HibernateGormDatastoreSpec {
         def mappings = metadataBuildingContext.getMetadataCollector()
 
         when:
-        binder.bindComponent(component, embeddedProp, mappings, 
"sessionFactory")
+        binder.bindComponent(component, embeddedProp, mappings)
 
         then:
         component.getComponentClassName() == Address.name
         component.getRoleName() == Address.name + ".address"
         1 * mappingCacheHolder.cacheMapping(associatedEntity)
-        1 * componentPropertyBinder.bindComponentProperty(_, _, _, _, _, _, _, 
_)
+        1 * componentPropertyBinder.bindComponentProperty(_, _, _, _, _, _, _)
     }
 
     static class MyEntity {}
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ComponentPropertyBinderSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ComponentPropertyBinderSpec.groovy
index 1189d3cfd1..0a4df79439 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ComponentPropertyBinderSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ComponentPropertyBinderSpec.groovy
@@ -5,17 +5,13 @@ import org.grails.datastore.mapping.model.MappingContext
 import org.grails.datastore.mapping.model.PersistentEntity
 import org.grails.datastore.mapping.model.PersistentProperty
 import org.grails.datastore.mapping.model.types.Association
-import org.grails.datastore.mapping.model.types.ManyToOne as GormManyToOne
-import org.grails.datastore.mapping.model.types.OneToOne as GormOneToOne
 import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentEntity
 import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentProperty
 import org.grails.orm.hibernate.cfg.Mapping
 import org.grails.orm.hibernate.cfg.MappingCacheHolder
 import org.grails.orm.hibernate.cfg.PersistentEntityNamingStrategy
 import org.grails.orm.hibernate.cfg.PropertyConfig
-import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateManyToManyProperty
 import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateManyToOneProperty
-import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateOneToManyProperty
 import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateOneToOneProperty
 import org.grails.orm.hibernate.cfg.domainbinding.binder.CollectionBinder
 import org.grails.orm.hibernate.cfg.domainbinding.binder.ComponentBinder
@@ -124,7 +120,7 @@ class ComponentPropertyBinderSpec extends 
HibernateGormDatastoreSpec {
         propertyFromValueCreator.createProperty(_ as BasicValue, 
currentGrailsProp) >> hibernateProperty
 
         when:
-        binder.bindComponentProperty(component, componentProperty, 
currentGrailsProp, root, "address", table, mappings, "sessionFactory")
+        binder.bindComponentProperty(component, componentProperty, 
currentGrailsProp, root, "address", table, mappings)
 
         then:
         1 * mockSimpleValueBinder.bindSimpleValue(currentGrailsProp, 
componentProperty, _ as BasicValue, "address")
@@ -159,7 +155,7 @@ class ComponentPropertyBinderSpec extends 
HibernateGormDatastoreSpec {
         propertyFromValueCreator.createProperty(_ as HibernateManyToOne, 
currentGrailsProp) >> hibernateProperty
 
         when:
-        binder.bindComponentProperty(component, componentProperty, 
currentGrailsProp, root, "address", table, mappings, "sessionFactory")
+        binder.bindComponentProperty(component, componentProperty, 
currentGrailsProp, root, "address", table, mappings)
 
         then:
         1 * propertyFromValueCreator.createProperty(_ as HibernateManyToOne, 
currentGrailsProp) >> hibernateProperty
@@ -198,7 +194,7 @@ class ComponentPropertyBinderSpec extends 
HibernateGormDatastoreSpec {
         propertyFromValueCreator.createProperty(_ as HibernateOneToOne, 
currentGrailsProp) >> hibernateProperty
 
         when:
-        binder.bindComponentProperty(component, componentProperty, 
currentGrailsProp, root, "address", table, mappings, "sessionFactory")
+        binder.bindComponentProperty(component, componentProperty, 
currentGrailsProp, root, "address", table, mappings)
 
         then:
         1 * propertyFromValueCreator.createProperty(_ as HibernateOneToOne, 
currentGrailsProp) >> hibernateProperty
@@ -231,7 +227,7 @@ class ComponentPropertyBinderSpec extends 
HibernateGormDatastoreSpec {
         propertyFromValueCreator.createProperty(_ as BasicValue, 
currentGrailsProp) >> hibernateProperty
 
         when:
-        binder.bindComponentProperty(component, componentProperty, 
currentGrailsProp, root, "address", table, mappings, "sessionFactory")
+        binder.bindComponentProperty(component, componentProperty, 
currentGrailsProp, root, "address", table, mappings)
 
         then:
         1 * enumTypeBinder.bindEnumType(currentGrailsProp, MyEnum, _ as 
BasicValue, "address_type_col")
@@ -262,7 +258,7 @@ class ComponentPropertyBinderSpec extends 
HibernateGormDatastoreSpec {
         propertyFromValueCreator.createProperty(_ as BasicValue, 
currentGrailsProp) >> hibernateProperty
 
         when:
-        binder.bindComponentProperty(component, componentProperty, 
currentGrailsProp, root, "address", table, mappings, "sessionFactory")
+        binder.bindComponentProperty(component, componentProperty, 
currentGrailsProp, root, "address", table, mappings)
 
         then:
         1 * mockSimpleValueBinder.bindSimpleValue(
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/CompositeIdBinderSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/CompositeIdBinderSpec.groovy
index 10d754596c..cc66523f39 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/CompositeIdBinderSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/CompositeIdBinderSpec.groovy
@@ -47,13 +47,13 @@ class CompositeIdBinderSpec extends 
HibernateGormDatastoreSpec {
         root.setTable(table)
 
         when:
-        binder.bindCompositeId(domainClass, root, compositeIdentity, mappings, 
"sessionFactory")
+        binder.bindCompositeId(domainClass, root, compositeIdentity, mappings)
 
         then:
         root.getIdentifier() instanceof Component
         root.getIdentifierMapper() instanceof Component
         root.hasEmbeddedIdentifier()
-        2 * componentPropertyBinder.bindComponentProperty(_ as Component, 
identifierProp, _ as PersistentProperty, root, "", table, mappings, 
"sessionFactory")
+        2 * componentPropertyBinder.bindComponentProperty(_ as Component, 
identifierProp, _ as PersistentProperty, root, "", table, mappings)
     }
 
     def "should fallback to domainClass composite identity when 
CompositeIdentity is null"() {
@@ -74,10 +74,10 @@ class CompositeIdBinderSpec extends 
HibernateGormDatastoreSpec {
         root.setTable(table)
 
         when:
-        binder.bindCompositeId(domainClass, root, null, mappings, 
"sessionFactory")
+        binder.bindCompositeId(domainClass, root, null, mappings)
 
         then:
-        1 * componentPropertyBinder.bindComponentProperty(_ as Component, 
identifierProp, prop1, root, "", table, mappings, "sessionFactory")
+        1 * componentPropertyBinder.bindComponentProperty(_ as Component, 
identifierProp, prop1, root, "", table, mappings)
     }
 
     def "should throw MappingException if no composite properties found"() {
@@ -91,7 +91,7 @@ class CompositeIdBinderSpec extends 
HibernateGormDatastoreSpec {
         domainClass.getName() >> "MyEntity"
 
         when:
-        binder.bindCompositeId(domainClass, root, null, mappings, 
"sessionFactory")
+        binder.bindCompositeId(domainClass, root, null, mappings)
 
         then:
         thrown(org.hibernate.MappingException)
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/GrailsPropertyBinderSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/GrailsPropertyBinderSpec.groovy
index 75f29d47b5..f2d70c1df4 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/GrailsPropertyBinderSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/GrailsPropertyBinderSpec.groovy
@@ -33,8 +33,6 @@ import 
org.grails.orm.hibernate.cfg.domainbinding.binder.ManyToOneValuesBinder
 import 
org.grails.orm.hibernate.cfg.domainbinding.binder.CompositeIdentifierToManyToOneBinder
 import org.grails.orm.hibernate.cfg.domainbinding.util.SimpleValueColumnFetcher
 import org.grails.orm.hibernate.cfg.domainbinding.util.TableNameFetcher
-import 
org.grails.orm.hibernate.cfg.domainbinding.binder.SimpleValueColumnBinder
-
 import org.grails.orm.hibernate.cfg.domainbinding.binder.IdentityBinder
 import org.grails.orm.hibernate.cfg.domainbinding.binder.VersionBinder
 import org.grails.orm.hibernate.cfg.domainbinding.binder.CompositeIdBinder
@@ -43,6 +41,12 @@ import 
org.grails.orm.hibernate.cfg.domainbinding.binder.PropertyBinder
 import org.grails.orm.hibernate.cfg.domainbinding.util.BasicValueIdCreator
 import org.hibernate.boot.spi.InFlightMetadataCollector
 
+import org.grails.orm.hibernate.cfg.domainbinding.binder.ClassPropertiesBinder
+import org.grails.orm.hibernate.cfg.domainbinding.util.MultiTenantFilterBinder
+import org.grails.orm.hibernate.cfg.domainbinding.binder.JoinedSubClassBinder
+import org.grails.orm.hibernate.cfg.domainbinding.binder.UnionSubclassBinder
+import 
org.grails.orm.hibernate.cfg.domainbinding.binder.SingleTableSubclassBinder
+
 class GrailsPropertyBinderSpec extends HibernateGormDatastoreSpec {
 
     protected Map getBinders(GrailsDomainBinder binder) {
@@ -77,6 +81,7 @@ class GrailsPropertyBinderSpec extends 
HibernateGormDatastoreSpec {
                 compositeIdentifierToManyToOneBinder,
                 simpleValueColumnFetcher
         )
+        PropertyFromValueCreator propertyFromValueCreator = new 
PropertyFromValueCreator()
         ComponentPropertyBinder componentPropertyBinder = new 
ComponentPropertyBinder(
                 metadataBuildingContext,
                 namingStrategy,
@@ -85,7 +90,7 @@ class GrailsPropertyBinderSpec extends 
HibernateGormDatastoreSpec {
                 collectionHolder,
                 enumTypeBinderToUse,
                 collectionBinder,
-                new PropertyFromValueCreator(),
+                propertyFromValueCreator,
                 null,
                 simpleValueBinder,
                 oneToOneBinder,
@@ -103,13 +108,20 @@ class GrailsPropertyBinderSpec extends 
HibernateGormDatastoreSpec {
                 columnNameForPropertyAndPathFetcher,
                 oneToOneBinder,
                 manyToOneBinder,
-                new PropertyFromValueCreator()
+                propertyFromValueCreator
         )
         CompositeIdBinder compositeIdBinder = new 
CompositeIdBinder(metadataBuildingContext, componentPropertyBinder)
         PropertyBinder propertyBinderHelper = new PropertyBinder()
         SimpleIdBinder simpleIdBinder = new 
SimpleIdBinder(metadataBuildingContext, namingStrategy, jdbcEnvironment, new 
BasicValueIdCreator(jdbcEnvironment), simpleValueBinder, propertyBinderHelper)
         IdentityBinder identityBinder = new IdentityBinder(simpleIdBinder, 
compositeIdBinder)
         VersionBinder versionBinder = new 
VersionBinder(metadataBuildingContext, simpleValueBinder, propertyBinderHelper, 
BasicValue::new)
+        
+        ClassBinder classBinder = new ClassBinder()
+        ClassPropertiesBinder classPropertiesBinder = new 
ClassPropertiesBinder(propertyBinder, propertyFromValueCreator)
+        MultiTenantFilterBinder multiTenantFilterBinder = new 
MultiTenantFilterBinder()
+        JoinedSubClassBinder joinedSubClassBinder = new 
JoinedSubClassBinder(metadataBuildingContext, namingStrategy, new 
org.grails.orm.hibernate.cfg.domainbinding.binder.SimpleValueColumnBinder(), 
columnNameForPropertyAndPathFetcher, classBinder)
+        UnionSubclassBinder unionSubclassBinder = new 
UnionSubclassBinder(metadataBuildingContext, namingStrategy, classBinder)
+        SingleTableSubclassBinder singleTableSubclassBinder = new 
SingleTableSubclassBinder(classBinder)
 
         return [
             propertyBinder: propertyBinder,
@@ -117,15 +129,29 @@ class GrailsPropertyBinderSpec extends 
HibernateGormDatastoreSpec {
             identityBinder: identityBinder,
             versionBinder: versionBinder,
             defaultColumnNameFetcher: defaultColumnNameFetcher,
-            columnNameForPropertyAndPathFetcher: 
columnNameForPropertyAndPathFetcher
+            columnNameForPropertyAndPathFetcher: 
columnNameForPropertyAndPathFetcher,
+            classBinder: classBinder,
+            classPropertiesBinder: classPropertiesBinder,
+            multiTenantFilterBinder: multiTenantFilterBinder,
+            joinedSubClassBinder: joinedSubClassBinder,
+            unionSubclassBinder: unionSubclassBinder,
+            singleTableSubclassBinder: singleTableSubclassBinder
         ]
     }
 
     protected void bindRoot(GrailsDomainBinder binder, 
GrailsHibernatePersistentEntity entity, InFlightMetadataCollector mappings, 
String sessionFactoryBeanName) {
         def binders = getBinders(binder)
-        binder.bindRoot(entity, mappings, sessionFactoryBeanName, 
binders.defaultColumnNameFetcher, binders.columnNameForPropertyAndPathFetcher, 
binders.identityBinder as IdentityBinder, binders.versionBinder as 
VersionBinder, binders.propertyBinder as GrailsPropertyBinder, new 
ClassBinder(), new PropertyFromValueCreator())
+        binder.bindRoot(entity, mappings, sessionFactoryBeanName, 
+            binders.defaultColumnNameFetcher, 
+            binders.identityBinder as IdentityBinder, 
+            binders.versionBinder as VersionBinder, 
+            binders.classBinder as ClassBinder, 
+            binders.classPropertiesBinder as ClassPropertiesBinder, 
+            binders.multiTenantFilterBinder as MultiTenantFilterBinder, 
+            binders.joinedSubClassBinder as JoinedSubClassBinder, 
+            binders.unionSubclassBinder as UnionSubclassBinder, 
+            binders.singleTableSubclassBinder as SingleTableSubclassBinder)
     }
-
     void setupSpec() {
         manager.addAllDomainClasses([
             org.apache.grails.data.testing.tck.domains.Pet,
@@ -148,7 +174,7 @@ class GrailsPropertyBinderSpec extends 
HibernateGormDatastoreSpec {
 
         when:
         def titleProp = persistentEntity.getPropertyByName("title") as 
GrailsHibernatePersistentProperty
-        Value value = propertyBinder.bindProperty(rootClass, titleProp, 
collector, "sessionFactory")
+        Value value = propertyBinder.bindProperty(rootClass, titleProp, 
collector)
         rootClass.addProperty(new 
PropertyFromValueCreator().createProperty(value, titleProp))
 
         then:
@@ -170,7 +196,7 @@ class GrailsPropertyBinderSpec extends 
HibernateGormDatastoreSpec {
 
         when:
         def statusProp = persistentEntity.getPropertyByName("status") as 
GrailsHibernatePersistentProperty
-        Value value = propertyBinder.bindProperty(rootClass, statusProp, 
collector, "sessionFactory")
+        Value value = propertyBinder.bindProperty(rootClass, statusProp, 
collector)
         rootClass.addProperty(new 
PropertyFromValueCreator().createProperty(value, statusProp))
 
         then:
@@ -196,7 +222,7 @@ class GrailsPropertyBinderSpec extends 
HibernateGormDatastoreSpec {
 
         when:
         def ownerProp = petEntity.getPropertyByName("owner") as 
GrailsHibernatePersistentProperty
-        Value value = propertyBinder.bindProperty(rootClass, ownerProp, 
collector, "sessionFactory")
+        Value value = propertyBinder.bindProperty(rootClass, ownerProp, 
collector)
         rootClass.addProperty(new 
PropertyFromValueCreator().createProperty(value, ownerProp))
 
         then:
@@ -219,7 +245,7 @@ class GrailsPropertyBinderSpec extends 
HibernateGormDatastoreSpec {
 
         when:
         def addressProp = persistentEntity.getPropertyByName("homeAddress") as 
GrailsHibernatePersistentProperty
-        Value value = propertyBinder.bindProperty(rootClass, addressProp, 
collector, "sessionFactory")
+        Value value = propertyBinder.bindProperty(rootClass, addressProp, 
collector)
         rootClass.addProperty(new 
PropertyFromValueCreator().createProperty(value, addressProp))
 
         then:
@@ -247,7 +273,7 @@ class GrailsPropertyBinderSpec extends 
HibernateGormDatastoreSpec {
 
         when:
         def petsProp = personEntity.getPropertyByName("pets") as 
GrailsHibernatePersistentProperty
-        Value value = propertyBinder.bindProperty(rootClass, petsProp, 
collector, "sessionFactory")
+        Value value = propertyBinder.bindProperty(rootClass, petsProp, 
collector)
         rootClass.addProperty(new 
PropertyFromValueCreator().createProperty(value, petsProp))
 
         then:
@@ -286,7 +312,7 @@ class GrailsPropertyBinderSpec extends 
HibernateGormDatastoreSpec {
 
         when:
         def booksProp = authorEntity.getPropertyByName("books") as 
GrailsHibernatePersistentProperty
-        Value value = propertyBinder.bindProperty(rootClass, booksProp, 
collector, "sessionFactory")
+        Value value = propertyBinder.bindProperty(rootClass, booksProp, 
collector)
         rootClass.addProperty(new 
PropertyFromValueCreator().createProperty(value, booksProp))
         collector.processSecondPasses(binder.getMetadataBuildingContext())
 
@@ -325,7 +351,7 @@ class GrailsPropertyBinderSpec extends 
HibernateGormDatastoreSpec {
 
         when:
         def booksProp = authorEntity.getPropertyByName("books") as 
GrailsHibernatePersistentProperty
-        Value value = propertyBinder.bindProperty(rootClass, booksProp, 
collector, "sessionFactory")
+        Value value = propertyBinder.bindProperty(rootClass, booksProp, 
collector)
         rootClass.addProperty(new 
PropertyFromValueCreator().createProperty(value, booksProp))
         collector.processSecondPasses(binder.getMetadataBuildingContext())
 
@@ -386,7 +412,7 @@ class GrailsPropertyBinderSpec extends 
HibernateGormDatastoreSpec {
 
         when:
         def childBookProp = authorEntity.getPropertyByName("childBook") as 
GrailsHibernatePersistentProperty
-        Value value = propertyBinder.bindProperty(rootClass, childBookProp, 
collector, "sessionFactory")
+        Value value = propertyBinder.bindProperty(rootClass, childBookProp, 
collector)
         rootClass.addProperty(new 
PropertyFromValueCreator().createProperty(value, childBookProp))
         // Process second passes to ensure Hibernate's internal mappings are 
finalized
         collector.processSecondPasses(binder.getMetadataBuildingContext())
@@ -454,7 +480,7 @@ class GrailsPropertyBinderSpec extends 
HibernateGormDatastoreSpec {
 
         when:
         // Capture the return value of bindProperty
-        def resultValue = propertyBinder.bindProperty(rootClass, 
currentGrailsProp, mappings, "sessionFactory")
+        def resultValue = propertyBinder.bindProperty(rootClass, 
currentGrailsProp, mappings)
 
         then:
         // Assert that bindProperty returns a Value object
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/IdentityBinderSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/IdentityBinderSpec.groovy
index 34b95b3470..25cf3521de 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/IdentityBinderSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/IdentityBinderSpec.groovy
@@ -37,7 +37,7 @@ class IdentityBinderSpec extends HibernateGormDatastoreSpec {
         domainClass.getCompositeIdentity() >> null
 
         when:
-        binder.bindIdentity(domainClass, root, mappings, null, 
"sessionFactory")
+        binder.bindIdentity(domainClass, root, mappings, null)
 
         then:
         1 * simpleIdBinder.bindSimpleId(domainClass, root, null, _)
@@ -52,10 +52,10 @@ class IdentityBinderSpec extends HibernateGormDatastoreSpec 
{
         domainClass.getCompositeIdentity() >> compositeProps
 
         when:
-        binder.bindIdentity(domainClass, root, mappings, null, 
"sessionFactory")
+        binder.bindIdentity(domainClass, root, mappings, null)
 
         then:
-        1 * compositeIdBinder.bindCompositeId(domainClass, root, null, 
mappings, "sessionFactory")
+        1 * compositeIdBinder.bindCompositeId(domainClass, root, null, 
mappings)
     }
 
     def "should delegate to compositeIdBinder when mapping specifies composite 
identity"() {
@@ -68,10 +68,10 @@ class IdentityBinderSpec extends HibernateGormDatastoreSpec 
{
         gormMapping.getIdentity() >> compositeIdentity
 
         when:
-        binder.bindIdentity(domainClass, root, mappings, gormMapping, 
"sessionFactory")
+        binder.bindIdentity(domainClass, root, mappings, gormMapping)
 
         then:
-        1 * compositeIdBinder.bindCompositeId(domainClass, root, 
compositeIdentity, mappings, "sessionFactory")
+        1 * compositeIdBinder.bindCompositeId(domainClass, root, 
compositeIdentity, mappings)
     }
 
     def "should delegate to simpleIdBinder when mapping specifies simple 
identity"() {
@@ -88,7 +88,7 @@ class IdentityBinderSpec extends HibernateGormDatastoreSpec {
         domainClass.getName() >> "MyEntity"
 
         when:
-        binder.bindIdentity(domainClass, root, mappings, gormMapping, 
"sessionFactory")
+        binder.bindIdentity(domainClass, root, mappings, gormMapping)
 
         then:
         1 * simpleIdBinder.bindSimpleId(domainClass, root, identity, _)
@@ -107,7 +107,7 @@ class IdentityBinderSpec extends HibernateGormDatastoreSpec 
{
         domainClass.getName() >> "MyEntity"
 
         when:
-        binder.bindIdentity(domainClass, root, mappings, gormMapping, 
"sessionFactory")
+        binder.bindIdentity(domainClass, root, mappings, gormMapping)
 
         then:
         1 * simpleIdBinder.bindSimpleId(domainClass, root, identity, _)
@@ -127,7 +127,7 @@ class IdentityBinderSpec extends HibernateGormDatastoreSpec 
{
         domainClass.getName() >> "MyEntity"
 
         when:
-        binder.bindIdentity(domainClass, root, mappings, gormMapping, 
"sessionFactory")
+        binder.bindIdentity(domainClass, root, mappings, gormMapping)
 
         then:
         identity.getName() == "MyEntity"
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ListSecondPassBinderSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ListSecondPassBinderSpec.groovy
index 94ce5a94b0..d1fab3c61d 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ListSecondPassBinderSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ListSecondPassBinderSpec.groovy
@@ -41,6 +41,12 @@ import 
org.grails.orm.hibernate.cfg.domainbinding.binder.PropertyBinder
 import org.grails.orm.hibernate.cfg.domainbinding.util.PropertyFromValueCreator
 import org.hibernate.mapping.BasicValue
 
+import org.grails.orm.hibernate.cfg.domainbinding.binder.ClassPropertiesBinder
+import org.grails.orm.hibernate.cfg.domainbinding.util.MultiTenantFilterBinder
+import org.grails.orm.hibernate.cfg.domainbinding.binder.JoinedSubClassBinder
+import org.grails.orm.hibernate.cfg.domainbinding.binder.UnionSubclassBinder
+import 
org.grails.orm.hibernate.cfg.domainbinding.binder.SingleTableSubclassBinder
+
 class ListSecondPassBinderSpec extends HibernateGormDatastoreSpec {
 
     protected Map getBinders(GrailsDomainBinder binder) {
@@ -75,6 +81,7 @@ class ListSecondPassBinderSpec extends 
HibernateGormDatastoreSpec {
                 compositeIdentifierToManyToOneBinder,
                 simpleValueColumnFetcher
         )
+        PropertyFromValueCreator propertyFromValueCreator = new 
PropertyFromValueCreator()
         ComponentPropertyBinder componentPropertyBinder = new 
ComponentPropertyBinder(
                 metadataBuildingContext,
                 namingStrategy,
@@ -83,7 +90,7 @@ class ListSecondPassBinderSpec extends 
HibernateGormDatastoreSpec {
                 collectionHolder,
                 enumTypeBinderToUse,
                 collectionBinder,
-                new PropertyFromValueCreator(),
+                propertyFromValueCreator,
                 null,
                 simpleValueBinder,
                 oneToOneBinder,
@@ -101,7 +108,7 @@ class ListSecondPassBinderSpec extends 
HibernateGormDatastoreSpec {
                 columnNameForPropertyAndPathFetcher,
                 oneToOneBinder,
                 manyToOneBinder,
-                new PropertyFromValueCreator()
+                propertyFromValueCreator
         )
         CompositeIdBinder compositeIdBinder = new 
CompositeIdBinder(metadataBuildingContext, componentPropertyBinder)
         PropertyBinder propertyBinderHelper = new PropertyBinder()
@@ -109,21 +116,42 @@ class ListSecondPassBinderSpec extends 
HibernateGormDatastoreSpec {
         IdentityBinder identityBinder = new IdentityBinder(simpleIdBinder, 
compositeIdBinder)
         VersionBinder versionBinder = new 
VersionBinder(metadataBuildingContext, simpleValueBinder, propertyBinderHelper, 
BasicValue::new)
 
+        ClassBinder classBinder = new ClassBinder()
+        ClassPropertiesBinder classPropertiesBinder = new 
ClassPropertiesBinder(propertyBinder, propertyFromValueCreator)
+        MultiTenantFilterBinder multiTenantFilterBinder = new 
MultiTenantFilterBinder()
+        JoinedSubClassBinder joinedSubClassBinder = new 
JoinedSubClassBinder(metadataBuildingContext, namingStrategy, new 
org.grails.orm.hibernate.cfg.domainbinding.binder.SimpleValueColumnBinder(), 
columnNameForPropertyAndPathFetcher, classBinder)
+        UnionSubclassBinder unionSubclassBinder = new 
UnionSubclassBinder(metadataBuildingContext, namingStrategy, classBinder)
+        SingleTableSubclassBinder singleTableSubclassBinder = new 
SingleTableSubclassBinder(classBinder)
+
         return [
             propertyBinder: propertyBinder,
             collectionBinder: collectionBinder,
             identityBinder: identityBinder,
             versionBinder: versionBinder,
             defaultColumnNameFetcher: defaultColumnNameFetcher,
-            columnNameForPropertyAndPathFetcher: 
columnNameForPropertyAndPathFetcher
+            columnNameForPropertyAndPathFetcher: 
columnNameForPropertyAndPathFetcher,
+            classBinder: classBinder,
+            classPropertiesBinder: classPropertiesBinder,
+            multiTenantFilterBinder: multiTenantFilterBinder,
+            joinedSubClassBinder: joinedSubClassBinder,
+            unionSubclassBinder: unionSubclassBinder,
+            singleTableSubclassBinder: singleTableSubclassBinder
         ]
     }
 
     protected void bindRoot(GrailsDomainBinder binder, 
GrailsHibernatePersistentEntity entity, InFlightMetadataCollector mappings, 
String sessionFactoryBeanName) {
         def binders = getBinders(binder)
-        binder.bindRoot(entity, mappings, sessionFactoryBeanName, 
binders.defaultColumnNameFetcher, binders.columnNameForPropertyAndPathFetcher, 
binders.identityBinder as IdentityBinder, binders.versionBinder as 
VersionBinder, binders.propertyBinder as GrailsPropertyBinder, new 
ClassBinder(), new PropertyFromValueCreator())
+        binder.bindRoot(entity, mappings, sessionFactoryBeanName, 
+            binders.defaultColumnNameFetcher, 
+            binders.identityBinder as IdentityBinder, 
+            binders.versionBinder as VersionBinder, 
+            binders.classBinder as ClassBinder, 
+            binders.classPropertiesBinder as ClassPropertiesBinder, 
+            binders.multiTenantFilterBinder as MultiTenantFilterBinder, 
+            binders.joinedSubClassBinder as JoinedSubClassBinder, 
+            binders.unionSubclassBinder as UnionSubclassBinder, 
+            binders.singleTableSubclassBinder as SingleTableSubclassBinder)
     }
-
     void setupSpec() {
         manager.addAllDomainClasses([
                 ListBinderAuthor,
@@ -176,7 +204,7 @@ class ListSecondPassBinderSpec extends 
HibernateGormDatastoreSpec {
         list.setRole(authorEntity.name + ".books")
         
         // Initial first pass binding needed for second pass to work
-        collectionBinder.bindCollection(booksProp, list, rootClass, collector, 
"", "sessionFactory")
+        collectionBinder.bindCollection(booksProp, list, rootClass, collector, 
"")
 
         // Prepare persistentClasses map
         Map persistentClasses = [
@@ -185,8 +213,8 @@ class ListSecondPassBinderSpec extends 
HibernateGormDatastoreSpec {
         ]
 
         when:
-        collectionSecondPassBinder.bindCollectionSecondPass(booksProp, 
collector, persistentClasses, list, "sessionFactory")
-        listSecondPassBinder.bindListSecondPass(booksProp, collector, 
persistentClasses, list, "sessionFactory")
+        collectionSecondPassBinder.bindCollectionSecondPass(booksProp, 
collector, persistentClasses, list)
+        listSecondPassBinder.bindListSecondPass(booksProp, collector, 
persistentClasses, list)
         collector.processSecondPasses(binder.getMetadataBuildingContext())
 
         then:
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/MapSecondPassBinderSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/MapSecondPassBinderSpec.groovy
index 033e1f3a9f..036c650430 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/MapSecondPassBinderSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/MapSecondPassBinderSpec.groovy
@@ -41,6 +41,12 @@ import 
org.grails.orm.hibernate.cfg.domainbinding.binder.PropertyBinder
 import org.grails.orm.hibernate.cfg.domainbinding.util.PropertyFromValueCreator
 import org.hibernate.mapping.BasicValue
 
+import org.grails.orm.hibernate.cfg.domainbinding.binder.ClassPropertiesBinder
+import org.grails.orm.hibernate.cfg.domainbinding.util.MultiTenantFilterBinder
+import org.grails.orm.hibernate.cfg.domainbinding.binder.JoinedSubClassBinder
+import org.grails.orm.hibernate.cfg.domainbinding.binder.UnionSubclassBinder
+import 
org.grails.orm.hibernate.cfg.domainbinding.binder.SingleTableSubclassBinder
+
 class MapSecondPassBinderSpec extends HibernateGormDatastoreSpec {
 
     protected Map getBinders(GrailsDomainBinder binder) {
@@ -75,6 +81,7 @@ class MapSecondPassBinderSpec extends 
HibernateGormDatastoreSpec {
                 compositeIdentifierToManyToOneBinder,
                 simpleValueColumnFetcher
         )
+        PropertyFromValueCreator propertyFromValueCreator = new 
PropertyFromValueCreator()
         ComponentPropertyBinder componentPropertyBinder = new 
ComponentPropertyBinder(
                 metadataBuildingContext,
                 namingStrategy,
@@ -83,7 +90,7 @@ class MapSecondPassBinderSpec extends 
HibernateGormDatastoreSpec {
                 collectionHolder,
                 enumTypeBinderToUse,
                 collectionBinder,
-                new PropertyFromValueCreator(),
+                propertyFromValueCreator,
                 null,
                 simpleValueBinder,
                 oneToOneBinder,
@@ -101,7 +108,7 @@ class MapSecondPassBinderSpec extends 
HibernateGormDatastoreSpec {
                 columnNameForPropertyAndPathFetcher,
                 oneToOneBinder,
                 manyToOneBinder,
-                new PropertyFromValueCreator()
+                propertyFromValueCreator
         )
         CompositeIdBinder compositeIdBinder = new 
CompositeIdBinder(metadataBuildingContext, componentPropertyBinder)
         PropertyBinder propertyBinderHelper = new PropertyBinder()
@@ -109,21 +116,42 @@ class MapSecondPassBinderSpec extends 
HibernateGormDatastoreSpec {
         IdentityBinder identityBinder = new IdentityBinder(simpleIdBinder, 
compositeIdBinder)
         VersionBinder versionBinder = new 
VersionBinder(metadataBuildingContext, simpleValueBinder, propertyBinderHelper, 
BasicValue::new)
 
+        ClassBinder classBinder = new ClassBinder()
+        ClassPropertiesBinder classPropertiesBinder = new 
ClassPropertiesBinder(propertyBinder, propertyFromValueCreator)
+        MultiTenantFilterBinder multiTenantFilterBinder = new 
MultiTenantFilterBinder()
+        JoinedSubClassBinder joinedSubClassBinder = new 
JoinedSubClassBinder(metadataBuildingContext, namingStrategy, new 
org.grails.orm.hibernate.cfg.domainbinding.binder.SimpleValueColumnBinder(), 
columnNameForPropertyAndPathFetcher, classBinder)
+        UnionSubclassBinder unionSubclassBinder = new 
UnionSubclassBinder(metadataBuildingContext, namingStrategy, classBinder)
+        SingleTableSubclassBinder singleTableSubclassBinder = new 
SingleTableSubclassBinder(classBinder)
+
         return [
             propertyBinder: propertyBinder,
             collectionBinder: collectionBinder,
             identityBinder: identityBinder,
             versionBinder: versionBinder,
             defaultColumnNameFetcher: defaultColumnNameFetcher,
-            columnNameForPropertyAndPathFetcher: 
columnNameForPropertyAndPathFetcher
+            columnNameForPropertyAndPathFetcher: 
columnNameForPropertyAndPathFetcher,
+            classBinder: classBinder,
+            classPropertiesBinder: classPropertiesBinder,
+            multiTenantFilterBinder: multiTenantFilterBinder,
+            joinedSubClassBinder: joinedSubClassBinder,
+            unionSubclassBinder: unionSubclassBinder,
+            singleTableSubclassBinder: singleTableSubclassBinder
         ]
     }
 
     protected void bindRoot(GrailsDomainBinder binder, 
GrailsHibernatePersistentEntity entity, InFlightMetadataCollector mappings, 
String sessionFactoryBeanName) {
         def binders = getBinders(binder)
-        binder.bindRoot(entity, mappings, sessionFactoryBeanName, 
binders.defaultColumnNameFetcher, binders.columnNameForPropertyAndPathFetcher, 
binders.identityBinder as IdentityBinder, binders.versionBinder as 
VersionBinder, binders.propertyBinder as GrailsPropertyBinder, new 
ClassBinder(), new PropertyFromValueCreator())
+        binder.bindRoot(entity, mappings, sessionFactoryBeanName, 
+            binders.defaultColumnNameFetcher, 
+            binders.identityBinder as IdentityBinder, 
+            binders.versionBinder as VersionBinder, 
+            binders.classBinder as ClassBinder, 
+            binders.classPropertiesBinder as ClassPropertiesBinder, 
+            binders.multiTenantFilterBinder as MultiTenantFilterBinder, 
+            binders.joinedSubClassBinder as JoinedSubClassBinder, 
+            binders.unionSubclassBinder as UnionSubclassBinder, 
+            binders.singleTableSubclassBinder as SingleTableSubclassBinder)
     }
-
     void setupSpec() {
         manager.addAllDomainClasses([
                 MapAuthorBinder,
@@ -176,7 +204,7 @@ class MapSecondPassBinderSpec extends 
HibernateGormDatastoreSpec {
         map.setRole(authorEntity.name + ".books")
         
         // Initial first pass binding
-        collectionBinder.bindCollection(booksProp, map, rootClass, collector, 
"", "sessionFactory")
+        collectionBinder.bindCollection(booksProp, map, rootClass, collector, 
"")
 
         // Prepare persistentClasses map
         java.util.Map persistentClasses = [
@@ -185,8 +213,8 @@ class MapSecondPassBinderSpec extends 
HibernateGormDatastoreSpec {
         ]
 
         when:
-        collectionSecondPassBinder.bindCollectionSecondPass(booksProp, 
collector, persistentClasses, map, "sessionFactory")
-        mapSecondPassBinder.bindMapSecondPass(booksProp, collector, 
persistentClasses, map, "sessionFactory")
+        collectionSecondPassBinder.bindCollectionSecondPass(booksProp, 
collector, persistentClasses, map)
+        mapSecondPassBinder.bindMapSecondPass(booksProp, collector, 
persistentClasses, map)
         collector.processSecondPasses(binder.getMetadataBuildingContext())
 
         then:
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ClassPropertiesBinderSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ClassPropertiesBinderSpec.groovy
index c096318426..4d474be5bc 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ClassPropertiesBinderSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ClassPropertiesBinderSpec.groovy
@@ -40,13 +40,13 @@ class ClassPropertiesBinderSpec extends 
HibernateGormDatastoreSpec {
         domainClass.getMappedForm() >> mapping
 
         when:
-        binder.bindClassProperties(domainClass, persistentClass, mappings, 
sessionFactoryBeanName)
+        binder.bindClassProperties(domainClass, persistentClass, mappings)
 
         then:
-        1 * grailsPropertyBinder.bindProperty(persistentClass, prop1, 
mappings, sessionFactoryBeanName) >> value1
+        1 * grailsPropertyBinder.bindProperty(persistentClass, prop1, 
mappings) >> value1
         1 * propertyFromValueCreator.createProperty(value1, prop1) >> 
hibernateProp1
 
-        1 * grailsPropertyBinder.bindProperty(persistentClass, prop2, 
mappings, sessionFactoryBeanName) >> value2
+        1 * grailsPropertyBinder.bindProperty(persistentClass, prop2, 
mappings) >> value2
         1 * propertyFromValueCreator.createProperty(value2, prop2) >> 
hibernateProp2
 
         persistentClass.getProperty("hibernateProp1") == hibernateProp1
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/BagCollectionTypeSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/BagCollectionTypeSpec.groovy
index 896f902052..3b35775d55 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/BagCollectionTypeSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/BagCollectionTypeSpec.groovy
@@ -19,7 +19,7 @@ class BagCollectionTypeSpec extends 
HibernateGormDatastoreSpec {
         binder.getMetadataBuildingContext() >> metadataBuildingContext
         
         @Subject
-        def collectionType = new BagCollectionType(binder)
+        def collectionType = new BagCollectionType(metadataBuildingContext)
         
         def property = Mock(HibernateToManyProperty)
         def owner = new RootClass(metadataBuildingContext)
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/CollectionHolderSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/CollectionHolderSpec.groovy
index 087e293940..ff9588cff5 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/CollectionHolderSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/CollectionHolderSpec.groovy
@@ -10,7 +10,7 @@ class CollectionHolderSpec extends HibernateGormDatastoreSpec 
{
     CollectionHolder holder
 
     def setup() {
-        holder = new CollectionHolder(getGrailsDomainBinder())
+        holder = new 
CollectionHolder(getGrailsDomainBinder().getMetadataBuildingContext())
     }
 
     @Unroll
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/ListCollectionTypeSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/ListCollectionTypeSpec.groovy
index 4fb8c273bd..a815c72a83 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/ListCollectionTypeSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/ListCollectionTypeSpec.groovy
@@ -19,7 +19,7 @@ class ListCollectionTypeSpec extends 
HibernateGormDatastoreSpec {
         binder.getMetadataBuildingContext() >> metadataBuildingContext
         
         @Subject
-        def collectionType = new ListCollectionType(binder)
+        def collectionType = new ListCollectionType(metadataBuildingContext)
         
         def property = Mock(HibernateToManyProperty)
         def owner = new RootClass(metadataBuildingContext)
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/MapCollectionTypeSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/MapCollectionTypeSpec.groovy
index 25e1370e68..c864d82811 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/MapCollectionTypeSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/MapCollectionTypeSpec.groovy
@@ -19,7 +19,7 @@ class MapCollectionTypeSpec extends 
HibernateGormDatastoreSpec {
         binder.getMetadataBuildingContext() >> metadataBuildingContext
         
         @Subject
-        def collectionType = new MapCollectionType(binder)
+        def collectionType = new MapCollectionType(metadataBuildingContext)
         
         def property = Mock(HibernateToManyProperty)
         def owner = new RootClass(metadataBuildingContext)
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/SetCollectionTypeSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/SetCollectionTypeSpec.groovy
index da83ce4375..c445afdecd 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/SetCollectionTypeSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/SetCollectionTypeSpec.groovy
@@ -19,7 +19,7 @@ class SetCollectionTypeSpec extends 
HibernateGormDatastoreSpec {
         binder.getMetadataBuildingContext() >> metadataBuildingContext
         
         @Subject
-        def collectionType = new SetCollectionType(binder)
+        def collectionType = new SetCollectionType(metadataBuildingContext)
         
         def property = Mock(HibernateToManyProperty)
         def owner = new RootClass(metadataBuildingContext)
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/SortedSetCollectionTypeSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/SortedSetCollectionTypeSpec.groovy
index fdaa39a226..95d2038524 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/SortedSetCollectionTypeSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/SortedSetCollectionTypeSpec.groovy
@@ -19,7 +19,7 @@ class SortedSetCollectionTypeSpec extends 
HibernateGormDatastoreSpec {
         binder.getMetadataBuildingContext() >> metadataBuildingContext
         
         @Subject
-        def collectionType = new SortedSetCollectionType(binder)
+        def collectionType = new 
SortedSetCollectionType(metadataBuildingContext)
         
         def property = Mock(HibernateToManyProperty)
         def owner = new RootClass(metadataBuildingContext)

Reply via email to