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

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

commit 4e51fd3336dd02817d674d067e693fa010cd86ed
Author: Walter Duque de Estrada <[email protected]>
AuthorDate: Mon Mar 9 18:20:41 2026 -0500

    hibernate7: 1 Refactor subclass binders to internally create Hibernate 
mapping objects
                   2
                   3 - Update JoinedSubClassBinder, UnionSubclassBinder, and 
SingleTableSubclassBinder to instantiate JoinedSubclass, UnionSubclass, and 
SingleTableSubclass internally.
                   4 - Modify binder method signatures to return the created 
subclass and accept the parent PersistentClass.
                   5 - Update SingleTableSubclassBinder constructor to require 
MetadataBuildingContext.
                   6 - Refactor SubclassMappingBinder and GrailsDomainBinder to 
use the updated binder APIs.
---
 .../cfg/domainbinding/binder/GrailsDomainBinder.java   |  2 +-
 .../cfg/domainbinding/binder/JoinedSubClassBinder.java | 10 +++++++---
 .../binder/SingleTableSubclassBinder.java              | 15 +++++++++++----
 .../domainbinding/binder/SubclassMappingBinder.java    | 14 +++-----------
 .../cfg/domainbinding/binder/UnionSubclassBinder.java  | 10 +++++++---
 .../cfg/domainbinding/CollectionBinderSpec.groovy      |  2 +-
 .../cfg/domainbinding/GrailsPropertyBinderSpec.groovy  |  2 +-
 .../binder/JoinedSubClassBinderSpec.groovy             |  8 +++++---
 .../binder/SingleTableSubclassBinderSpec.groovy        |  9 +++++----
 .../binder/SubclassMappingBinderSpec.groovy            | 18 +++++++++++++++---
 .../binder/UnionSubclassBinderSpec.groovy              |  8 +++++---
 .../secondpass/ListSecondPassBinderSpec.groovy         |  2 +-
 .../secondpass/MapSecondPassBinderSpec.groovy          |  2 +-
 13 files changed, 63 insertions(+), 39 deletions(-)

diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/GrailsDomainBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/GrailsDomainBinder.java
index c538ba14db..cc343341d9 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/GrailsDomainBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/GrailsDomainBinder.java
@@ -204,7 +204,7 @@ public class GrailsDomainBinder implements 
AdditionalMappingContributor, TypeCon
     UnionSubclassBinder unionSubclassBinder =
         new UnionSubclassBinder(metadataBuildingContext, namingStrategy, 
classBinder, metadataCollector);
     SingleTableSubclassBinder singleTableSubclassBinder =
-        new SingleTableSubclassBinder(classBinder);
+        new SingleTableSubclassBinder(classBinder, metadataBuildingContext);
 
     SubclassMappingBinder subclassMappingBinder =
         new SubclassMappingBinder(
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/JoinedSubClassBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/JoinedSubClassBinder.java
index 2f5fdaa73c..92400c6244 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/JoinedSubClassBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/JoinedSubClassBinder.java
@@ -68,11 +68,13 @@ public class JoinedSubClassBinder {
    * Binds a joined sub-class mapping using table-per-subclass
    *
    * @param sub The Grails sub class
-   * @param joinedSubclass The Hibernate Subclass object
+   * @param parent The Hibernate Parent PersistentClass object
+   * @return The created JoinedSubclass
    */
-  public void bindJoinedSubClass(
+  public JoinedSubclass bindJoinedSubClass(
       GrailsHibernatePersistentEntity sub,
-      JoinedSubclass joinedSubclass) {
+      PersistentClass parent) {
+    JoinedSubclass joinedSubclass = new JoinedSubclass(parent, 
metadataBuildingContext);
     classBinder.bindClass(sub, joinedSubclass);
 
     String schemaName = sub.getSchema(mappings);
@@ -107,6 +109,8 @@ public class JoinedSubClassBinder {
 
     joinedSubclass.createPrimaryKey();
     joinedSubclass.createForeignKey();
+
+    return joinedSubclass;
   }
 
   private String getJoinedSubClassTableName(
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SingleTableSubclassBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SingleTableSubclassBinder.java
index 67b8866d6c..dc031f4624 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SingleTableSubclassBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SingleTableSubclassBinder.java
@@ -21,6 +21,8 @@ package org.grails.orm.hibernate.cfg.domainbinding.binder;
 import jakarta.annotation.Nonnull;
 import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.GrailsHibernatePersistentEntity;
 
+import org.hibernate.boot.spi.MetadataBuildingContext;
+import org.hibernate.mapping.PersistentClass;
 import org.hibernate.mapping.SingleTableSubclass;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -35,25 +37,30 @@ public class SingleTableSubclassBinder {
   private static final Logger LOG = 
LoggerFactory.getLogger(SingleTableSubclassBinder.class);
 
   private final ClassBinder classBinder;
+  private final MetadataBuildingContext metadataBuildingContext;
 
-  public SingleTableSubclassBinder(ClassBinder classBinder) {
+  public SingleTableSubclassBinder(ClassBinder classBinder, 
MetadataBuildingContext metadataBuildingContext) {
     this.classBinder = classBinder;
+    this.metadataBuildingContext = metadataBuildingContext;
   }
 
   /**
    * Binds a sub-class using table-per-hierarchy inheritance mapping
    *
    * @param sub      The Grails domain class instance representing the 
sub-class
-   * @param subClass The Hibernate SubClass instance
+   * @param parent   The Hibernate Parent PersistentClass object
+   * @return The created SingleTableSubclass
    */
-  public void bindSubClass(
+  public SingleTableSubclass bindSubClass(
       @Nonnull GrailsHibernatePersistentEntity sub,
-      SingleTableSubclass subClass) {
+      PersistentClass parent) {
+    SingleTableSubclass subClass = new SingleTableSubclass(parent, 
metadataBuildingContext);
     classBinder.bindClass(sub, subClass);
     subClass.setDiscriminatorValue(sub.getDiscriminatorValue());
     if (LOG.isDebugEnabled()) {
       LOG.debug(
           "Mapping subclass: " + subClass.getEntityName() + " -> " + 
subClass.getTable().getName());
     }
+    return subClass;
   }
 }
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubclassMappingBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubclassMappingBinder.java
index dd9bc1bbcf..2c92030139 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubclassMappingBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubclassMappingBinder.java
@@ -59,19 +59,11 @@ public class SubclassMappingBinder {
     subEntity.configureDerivedProperties();
     Mapping m = subEntity.getMappedForm();
     if (subEntity.isJoinedSubclass()) {
-      var joined = new JoinedSubclass(parent, this.metadataBuildingContext);
-      joinedSubClassBinder.bindJoinedSubClass(subEntity, joined);
-      subClass = joined;
+      subClass = joinedSubClassBinder.bindJoinedSubClass(subEntity, parent);
     } else if (subEntity.isUnionSubclass()) {
-      var union = new UnionSubclass(parent, this.metadataBuildingContext);
-      unionSubclassBinder.bindUnionSubclass(subEntity, union);
-      subClass = union;
+      subClass = unionSubclassBinder.bindUnionSubclass(subEntity, parent);
     } else {
-
-      var singleTableSubclass = new SingleTableSubclass(parent, 
this.metadataBuildingContext);
-
-      singleTableSubclassBinder.bindSubClass(subEntity, singleTableSubclass);
-      subClass = singleTableSubclass;
+      subClass = singleTableSubclassBinder.bindSubClass(subEntity, parent);
     }
 
     subClass.setBatchSize(Optional.ofNullable(m.getBatchSize()).orElse(-1));
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/UnionSubclassBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/UnionSubclassBinder.java
index 0587e4e1e7..ed58c57eb5 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/UnionSubclassBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/UnionSubclassBinder.java
@@ -24,6 +24,7 @@ import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.GrailsHibernatePersi
 import org.hibernate.MappingException;
 import org.hibernate.boot.spi.InFlightMetadataCollector;
 import org.hibernate.boot.spi.MetadataBuildingContext;
+import org.hibernate.mapping.PersistentClass;
 import org.hibernate.mapping.Table;
 import org.hibernate.mapping.UnionSubclass;
 import org.slf4j.Logger;
@@ -58,12 +59,14 @@ public class UnionSubclassBinder {
    * Binds a union sub-class mapping using table-per-concrete-class
    *
    * @param subClass The Grails sub class
-   * @param unionSubclass The Hibernate UnionSubclass object
+   * @param parent The Hibernate Parent PersistentClass object
+   * @return The created UnionSubclass
    */
-  public void bindUnionSubclass(
+  public UnionSubclass bindUnionSubclass(
       @Nonnull GrailsHibernatePersistentEntity subClass,
-      UnionSubclass unionSubclass)
+      PersistentClass parent)
       throws MappingException {
+    UnionSubclass unionSubclass = new UnionSubclass(parent, 
metadataBuildingContext);
     classBinder.bindClass(subClass, unionSubclass);
 
     String schema = subClass.getSchema(mappings);
@@ -89,5 +92,6 @@ public class UnionSubclassBinder {
               + " -> "
               + unionSubclass.getTable().getName());
     }
+    return unionSubclass;
   }
 }
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 c218bf044a..c486f49176 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
@@ -120,7 +120,7 @@ class CollectionBinderSpec extends 
HibernateGormDatastoreSpec {
         MultiTenantFilterBinder multiTenantFilterBinder = new 
MultiTenantFilterBinder(new 
org.grails.orm.hibernate.cfg.domainbinding.util.GrailsPropertyResolver(), new 
org.grails.orm.hibernate.cfg.domainbinding.util.MultiTenantFilterDefinitionBinder(),
 getCollector(), defaultColumnNameFetcher)
         JoinedSubClassBinder joinedSubClassBinder = new 
JoinedSubClassBinder(metadataBuildingContext, namingStrategy, new 
org.grails.orm.hibernate.cfg.domainbinding.binder.SimpleValueColumnBinder(), 
columnNameForPropertyAndPathFetcher, classBinder, getCollector())
         UnionSubclassBinder unionSubclassBinder = new 
UnionSubclassBinder(metadataBuildingContext, namingStrategy, classBinder, 
getCollector())
-        SingleTableSubclassBinder singleTableSubclassBinder = new 
SingleTableSubclassBinder(classBinder)
+        SingleTableSubclassBinder singleTableSubclassBinder = new 
SingleTableSubclassBinder(classBinder, metadataBuildingContext)
 
         SubclassMappingBinder subclassMappingBinder = new 
SubclassMappingBinder(metadataBuildingContext, joinedSubClassBinder, 
unionSubclassBinder, singleTableSubclassBinder, classPropertiesBinder)
         SubClassBinder subClassBinder = new 
SubClassBinder(binder.getMappingCacheHolder(), subclassMappingBinder, 
multiTenantFilterBinder, "dataSource")
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 3d34296eaf..b417160629 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
@@ -186,7 +186,7 @@ class GrailsPropertyBinderSpec extends 
HibernateGormDatastoreSpec {
         MultiTenantFilterBinder multiTenantFilterBinder = new 
MultiTenantFilterBinder(new 
org.grails.orm.hibernate.cfg.domainbinding.util.GrailsPropertyResolver(), new 
org.grails.orm.hibernate.cfg.domainbinding.util.MultiTenantFilterDefinitionBinder(),
 collector, defaultColumnNameFetcher)
         JoinedSubClassBinder joinedSubClassBinder = new 
JoinedSubClassBinder(metadataBuildingContext, namingStrategy, new 
org.grails.orm.hibernate.cfg.domainbinding.binder.SimpleValueColumnBinder(), 
columnNameForPropertyAndPathFetcher, classBinder, collector)
         UnionSubclassBinder unionSubclassBinder = new 
UnionSubclassBinder(metadataBuildingContext, namingStrategy, classBinder, 
collector)
-        SingleTableSubclassBinder singleTableSubclassBinder = new 
SingleTableSubclassBinder(classBinder)
+        SingleTableSubclassBinder singleTableSubclassBinder = new 
SingleTableSubclassBinder(classBinder, metadataBuildingContext)
 
         SubclassMappingBinder subclassMappingBinder = new 
SubclassMappingBinder(metadataBuildingContext, joinedSubClassBinder, 
unionSubclassBinder, singleTableSubclassBinder, classPropertiesBinder)
         SubClassBinder subClassBinder = new 
SubClassBinder(binder.getMappingCacheHolder(), subclassMappingBinder, 
multiTenantFilterBinder, "dataSource")
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/JoinedSubClassBinderSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/JoinedSubClassBinderSpec.groovy
index 64273c2d6e..63b6994f2f 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/JoinedSubClassBinderSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/JoinedSubClassBinderSpec.groovy
@@ -55,13 +55,15 @@ class JoinedSubClassBinderSpec extends 
HibernateGormDatastoreSpec {
         rootClass.createPrimaryKey()
         
         // The JoinedSubclass needs the parent PersistentClass
-        def joinedSubclass = new JoinedSubclass(rootClass, buildingContext)
-        joinedSubclass.setEntityName(JoinedSubClassSub.name)
+        // def joinedSubclass = new JoinedSubclass(rootClass, buildingContext)
+        // joinedSubclass.setEntityName(JoinedSubClassSub.name)
 
         when:
-        binder.bindJoinedSubClass(subEntity, joinedSubclass)
+        def joinedSubclass = binder.bindJoinedSubClass(subEntity, rootClass)
 
         then:
+        joinedSubclass != null
+        joinedSubclass.getEntityName() == JoinedSubClassSub.name
         joinedSubclass.getTable() != null
         joinedSubclass.getTable().getName() != "JS_ROOT_TABLE"
         joinedSubclass.getKey() != null
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SingleTableSubclassBinderSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SingleTableSubclassBinderSpec.groovy
index a3bcea9100..c3f22171b9 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SingleTableSubclassBinderSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SingleTableSubclassBinderSpec.groovy
@@ -17,7 +17,7 @@ class SingleTableSubclassBinderSpec extends 
HibernateGormDatastoreSpec {
     void setup() {
         def buildingContext = 
getGrailsDomainBinder().getMetadataBuildingContext()
         classBinder = new ClassBinder(buildingContext.getMetadataCollector())
-        binder = new SingleTableSubclassBinder(classBinder)
+        binder = new SingleTableSubclassBinder(classBinder, buildingContext)
     }
 
     void "test bind single table subclass with real entities"() {
@@ -37,13 +37,14 @@ class SingleTableSubclassBinderSpec extends 
HibernateGormDatastoreSpec {
         rootClass.setTable(rootTable)
         
         // Setup SingleTableSubclass
-        def singleTableSubclass = new SingleTableSubclass(rootClass, 
buildingContext)
-        singleTableSubclass.setEntityName(SingleTableSubClassSub.name)
+        // def singleTableSubclass = new SingleTableSubclass(rootClass, 
buildingContext)
+        // singleTableSubclass.setEntityName(SingleTableSubClassSub.name)
 
         when:
-        binder.bindSubClass(subEntity, singleTableSubclass)
+        def singleTableSubclass = binder.bindSubClass(subEntity, rootClass)
 
         then:
+        singleTableSubclass != null
         singleTableSubclass.getTable() == rootTable
         singleTableSubclass.getDiscriminatorValue() == "SUB_CLASS"
     }
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubclassMappingBinderSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubclassMappingBinderSpec.groovy
index cd13ca27e6..7e94dd2842 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubclassMappingBinderSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubclassMappingBinderSpec.groovy
@@ -50,7 +50,11 @@ class SubclassMappingBinderSpec extends 
HibernateGormDatastoreSpec {
 
         then:
         subEntity != null
-        1 * singleTableSubclassBinder.bindSubClass(subEntity, _ as 
SingleTableSubclass)
+        1 * singleTableSubclassBinder.bindSubClass(subEntity, rootClass) >> {
+            def s = new SingleTableSubclass(rootClass, metadataBuildingContext)
+            s.setEntityName(subEntity.getName())
+            s
+        }
         1 * classPropertiesBinder.bindClassProperties(subEntity, _ as Subclass)
         subClass instanceof SingleTableSubclass
         subClass.getEntityName() == SMBSSingleSub.name
@@ -70,7 +74,11 @@ class SubclassMappingBinderSpec extends 
HibernateGormDatastoreSpec {
 
         then:
         subEntity != null
-        1 * joinedSubClassBinder.bindJoinedSubClass(subEntity, _ as 
JoinedSubclass)
+        1 * joinedSubClassBinder.bindJoinedSubClass(subEntity, rootClass) >> {
+            def s = new JoinedSubclass(rootClass, metadataBuildingContext)
+            s.setEntityName(subEntity.getName())
+            s
+        }
         1 * classPropertiesBinder.bindClassProperties(subEntity, _ as Subclass)
         subClass instanceof JoinedSubclass
         subClass.getEntityName() == SMBSJoinedSub.name
@@ -90,7 +98,11 @@ class SubclassMappingBinderSpec extends 
HibernateGormDatastoreSpec {
 
         then:
         subEntity != null
-        1 * unionSubclassBinder.bindUnionSubclass(subEntity, _ as 
UnionSubclass)
+        1 * unionSubclassBinder.bindUnionSubclass(subEntity, rootClass) >> {
+            def s = new UnionSubclass(rootClass, metadataBuildingContext)
+            s.setEntityName(subEntity.getName())
+            s
+        }
         1 * classPropertiesBinder.bindClassProperties(subEntity, _ as Subclass)
         subClass instanceof UnionSubclass
         subClass.getEntityName() == SMBSUnionSub.name
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/UnionSubclassBinderSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/UnionSubclassBinderSpec.groovy
index 62aa2bbc0f..c037d31142 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/UnionSubclassBinderSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/UnionSubclassBinderSpec.groovy
@@ -39,13 +39,15 @@ class UnionSubclassBinderSpec extends 
HibernateGormDatastoreSpec {
         rootClass.setTable(rootTable)
         
         // Setup UnionSubclass
-        def unionSubclass = new UnionSubclass(rootClass, buildingContext)
-        unionSubclass.setEntityName(UnionSubClassSub.name)
+        // def unionSubclass = new UnionSubclass(rootClass, buildingContext)
+        // unionSubclass.setEntityName(UnionSubClassSub.name)
 
         when:
-        binder.bindUnionSubclass(subEntity, unionSubclass)
+        def unionSubclass = binder.bindUnionSubclass(subEntity, rootClass)
 
         then:
+        unionSubclass != null
+        unionSubclass.getEntityName() == UnionSubClassSub.name
         unionSubclass.getTable() != null
         unionSubclass.getTable().getName() != "US_ROOT_TABLE"
         unionSubclass.getClassName() == UnionSubClassSub.name
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/ListSecondPassBinderSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/ListSecondPassBinderSpec.groovy
index 6c560b489c..5526992cce 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/ListSecondPassBinderSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/ListSecondPassBinderSpec.groovy
@@ -122,7 +122,7 @@ class ListSecondPassBinderSpec extends 
HibernateGormDatastoreSpec {
         MultiTenantFilterBinder multiTenantFilterBinder = new 
MultiTenantFilterBinder(new 
org.grails.orm.hibernate.cfg.domainbinding.util.GrailsPropertyResolver(), new 
org.grails.orm.hibernate.cfg.domainbinding.util.MultiTenantFilterDefinitionBinder(),
 collector, defaultColumnNameFetcher)
         JoinedSubClassBinder joinedSubClassBinder = new 
JoinedSubClassBinder(metadataBuildingContext, namingStrategy, new 
org.grails.orm.hibernate.cfg.domainbinding.binder.SimpleValueColumnBinder(), 
columnNameForPropertyAndPathFetcher, classBinder, collector)
         UnionSubclassBinder unionSubclassBinder = new 
UnionSubclassBinder(metadataBuildingContext, namingStrategy, classBinder, 
collector)
-        SingleTableSubclassBinder singleTableSubclassBinder = new 
SingleTableSubclassBinder(classBinder)
+        SingleTableSubclassBinder singleTableSubclassBinder = new 
SingleTableSubclassBinder(classBinder, metadataBuildingContext)
 
         SubclassMappingBinder subclassMappingBinder = new 
SubclassMappingBinder(metadataBuildingContext, joinedSubClassBinder, 
unionSubclassBinder, singleTableSubclassBinder, classPropertiesBinder)
         SubClassBinder subClassBinder = new 
SubClassBinder(binder.getMappingCacheHolder(), subclassMappingBinder, 
multiTenantFilterBinder, "dataSource")
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/MapSecondPassBinderSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/MapSecondPassBinderSpec.groovy
index b9a673e292..7cfb73ab61 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/MapSecondPassBinderSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/MapSecondPassBinderSpec.groovy
@@ -120,7 +120,7 @@ class MapSecondPassBinderSpec extends 
HibernateGormDatastoreSpec {
         MultiTenantFilterBinder multiTenantFilterBinder = new 
MultiTenantFilterBinder(new 
org.grails.orm.hibernate.cfg.domainbinding.util.GrailsPropertyResolver(), new 
org.grails.orm.hibernate.cfg.domainbinding.util.MultiTenantFilterDefinitionBinder(),
 getCollector(), defaultColumnNameFetcher)
         JoinedSubClassBinder joinedSubClassBinder = new 
JoinedSubClassBinder(metadataBuildingContext, namingStrategy, new 
org.grails.orm.hibernate.cfg.domainbinding.binder.SimpleValueColumnBinder(), 
columnNameForPropertyAndPathFetcher, classBinder, getCollector())
         UnionSubclassBinder unionSubclassBinder = new 
UnionSubclassBinder(metadataBuildingContext, namingStrategy, classBinder, 
getCollector())
-        SingleTableSubclassBinder singleTableSubclassBinder = new 
SingleTableSubclassBinder(classBinder)
+        SingleTableSubclassBinder singleTableSubclassBinder = new 
SingleTableSubclassBinder(classBinder, metadataBuildingContext)
 
         SubclassMappingBinder subclassMappingBinder = new 
SubclassMappingBinder(metadataBuildingContext, joinedSubClassBinder, 
unionSubclassBinder, singleTableSubclassBinder, classPropertiesBinder)
         SubClassBinder subClassBinder = new 
SubClassBinder(binder.getMappingCacheHolder(), subclassMappingBinder, 
multiTenantFilterBinder, "dataSource")

Reply via email to