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")
