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 d345b2f3a5bacacece6abb98fdede9fff50707f3 Author: Walter Duque de Estrada <[email protected]> AuthorDate: Thu Mar 12 21:48:47 2026 -0500 hibernate 7: refactoring RootBinder --- .../domainbinding/binder/GrailsDomainBinder.java | 5 +++-- .../cfg/domainbinding/binder/RootBinder.java | 23 +++++++++++++++++++--- .../RootPersistentClassCommonValuesBinder.java | 3 ++- .../cfg/domainbinding/binder/SubClassBinder.java | 6 +----- .../util/MultiTenantFilterBinder.java | 1 - .../cfg/domainbinding/CollectionBinderSpec.groovy | 7 ++++--- .../domainbinding/GrailsPropertyBinderSpec.groovy | 4 ++-- .../cfg/domainbinding/binder/RootBinderSpec.groovy | 12 +++++++---- .../domainbinding/binder/SubClassBinderSpec.groovy | 6 +----- .../secondpass/ListSecondPassBinderSpec.groovy | 4 ++-- .../secondpass/MapSecondPassBinderSpec.groovy | 4 ++-- 11 files changed, 45 insertions(+), 30 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 fd075a71bc..55ec7a0b33 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 @@ -198,7 +198,7 @@ public class GrailsDomainBinder implements AdditionalMappingContributor, TypeCon SubclassMappingBinder subclassMappingBinder = new SubclassMappingBinder( joinedSubClassBinder, unionSubclassBinder, singleTableSubclassBinder, classPropertiesBinder); SubClassBinder subClassBinder = - new SubClassBinder(mappingCacheHolder, subclassMappingBinder, multiTenantFilterBinder, dataSourceName); + new SubClassBinder( subclassMappingBinder, multiTenantFilterBinder, dataSourceName); RootPersistentClassCommonValuesBinder rootPersistentClassCommonValuesBinder = new RootPersistentClassCommonValuesBinder( metadataBuildingContext, @@ -219,7 +219,8 @@ public class GrailsDomainBinder implements AdditionalMappingContributor, TypeCon subClassBinder, rootPersistentClassCommonValuesBinder, discriminatorPropertyBinder, - metadataCollector); + metadataCollector, + mappingCacheHolder); hibernateMappingContext.getHibernatePersistentEntities(dataSourceName) .stream() diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootBinder.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootBinder.java index 4ebc00b374..27221cdece 100644 --- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootBinder.java +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootBinder.java @@ -19,14 +19,19 @@ package org.grails.orm.hibernate.cfg.domainbinding.binder; import java.util.Collection; +import java.util.List; +import java.util.stream.Stream; import jakarta.annotation.Nonnull; +import org.checkerframework.checker.nullness.qual.NonNull; import org.hibernate.boot.spi.InFlightMetadataCollector; import org.hibernate.mapping.RootClass; +import org.hibernate.mapping.Subclass; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.grails.orm.hibernate.cfg.MappingCacheHolder; import org.grails.orm.hibernate.cfg.domainbinding.hibernate.GrailsHibernatePersistentEntity; import org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentEntity; import org.grails.orm.hibernate.cfg.domainbinding.util.MultiTenantFilterBinder; @@ -43,6 +48,7 @@ public class RootBinder { private final RootPersistentClassCommonValuesBinder rootPersistentClassCommonValuesBinder; private final DiscriminatorPropertyBinder discriminatorPropertyBinder; private final InFlightMetadataCollector mappings; + private final MappingCacheHolder mappingCacheHolder; public RootBinder( String dataSourceName, @@ -50,13 +56,14 @@ public class RootBinder { SubClassBinder subClassBinder, RootPersistentClassCommonValuesBinder rootPersistentClassCommonValuesBinder, DiscriminatorPropertyBinder discriminatorPropertyBinder, - InFlightMetadataCollector mappings) { + InFlightMetadataCollector mappings, MappingCacheHolder mappingCacheHolder) { this.dataSourceName = dataSourceName; this.multiTenantFilterBinder = multiTenantFilterBinder; this.subClassBinder = subClassBinder; this.rootPersistentClassCommonValuesBinder = rootPersistentClassCommonValuesBinder; this.discriminatorPropertyBinder = discriminatorPropertyBinder; this.mappings = mappings; + this.mappingCacheHolder = mappingCacheHolder; } /** @@ -80,11 +87,21 @@ public class RootBinder { // bind the sub classes children.stream() - .flatMap(sub -> subClassBinder.bindSubClass(sub, root).stream()) - .forEach(mappings::addEntityBinding); + .flatMap(sub -> getSubclassStream(sub, root)) + .forEach(subClass -> addSubclass(subClass, root)); multiTenantFilterBinder.bind(entity, root); mappings.addEntityBinding(root); } + + private void addSubclass(Subclass subClass, RootClass root) { + root.addSubclass(subClass); + mappings.addEntityBinding(subClass); + } + + private @NonNull Stream<Subclass> getSubclassStream(HibernatePersistentEntity entity, RootClass root) { + mappingCacheHolder.cacheMapping(entity); + return subClassBinder.bindSubClass(entity, root).stream(); + } } diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootPersistentClassCommonValuesBinder.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootPersistentClassCommonValuesBinder.java index bab7999c2b..d929459d96 100644 --- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootPersistentClassCommonValuesBinder.java +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootPersistentClassCommonValuesBinder.java @@ -30,6 +30,7 @@ import org.grails.orm.hibernate.cfg.CacheConfig; import org.grails.orm.hibernate.cfg.Mapping; import org.grails.orm.hibernate.cfg.PersistentEntityNamingStrategy; import org.grails.orm.hibernate.cfg.domainbinding.hibernate.GrailsHibernatePersistentEntity; +import org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentEntity; public class RootPersistentClassCommonValuesBinder { public static final Logger LOG = LoggerFactory.getLogger(RootPersistentClassCommonValuesBinder.class); @@ -59,7 +60,7 @@ public class RootPersistentClassCommonValuesBinder { this.mappings = mappings; } - public RootClass bindRoot(@Nonnull GrailsHibernatePersistentEntity domainClass) { + public RootClass bindRoot(@Nonnull HibernatePersistentEntity domainClass) { RootClass root = new RootClass(this.metadataBuildingContext); classBinder.bindClass(domainClass, root); diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubClassBinder.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubClassBinder.java index 609b1b37e4..ec7cc31f39 100644 --- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubClassBinder.java +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubClassBinder.java @@ -37,17 +37,14 @@ import org.grails.orm.hibernate.cfg.domainbinding.util.MultiTenantFilterBinder; /** Binder for subclasses. */ public class SubClassBinder { - private final MappingCacheHolder mappingCacheHolder; private final SubclassMappingBinder subclassMappingBinder; private final MultiTenantFilterBinder multiTenantFilterBinder; private final String dataSourceName; public SubClassBinder( - MappingCacheHolder mappingCacheHolder, SubclassMappingBinder subclassMappingBinder, MultiTenantFilterBinder multiTenantFilterBinder, String dataSourceName) { - this.mappingCacheHolder = mappingCacheHolder; this.subclassMappingBinder = subclassMappingBinder; this.multiTenantFilterBinder = multiTenantFilterBinder; this.dataSourceName = dataSourceName; @@ -61,9 +58,8 @@ public class SubClassBinder { * @return The list of subclasses created */ public List<Subclass> bindSubClass(@Nonnull HibernatePersistentEntity sub, PersistentClass parent) { - mappingCacheHolder.cacheMapping(sub); Subclass subClass = subclassMappingBinder.createSubclassMapping(sub, parent); - parent.addSubclass(subClass); + sub.setPersistentClass(subClass); bindMultiTenantFilter(sub, subClass); List<Subclass> subclasses = new ArrayList<>(); subclasses.add(subClass); diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/MultiTenantFilterBinder.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/MultiTenantFilterBinder.java index 78c2ec5d8f..373e170a51 100644 --- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/MultiTenantFilterBinder.java +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/MultiTenantFilterBinder.java @@ -35,7 +35,6 @@ import org.hibernate.mapping.SingleTableSubclass; import org.hibernate.mapping.UnionSubclass; import org.grails.datastore.mapping.model.config.GormProperties; -import org.grails.orm.hibernate.cfg.domainbinding.hibernate.GrailsHibernatePersistentEntity; import org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentEntity; import org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentProperty; 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 f27da1b589..4559ff1323 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 @@ -14,6 +14,7 @@ import org.grails.orm.hibernate.cfg.domainbinding.binder.ForeignKeyOneToOneBinde import org.grails.orm.hibernate.cfg.domainbinding.binder.ManyToOneBinder 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.ForeignKeyColumnCountCalculator import org.grails.orm.hibernate.cfg.domainbinding.util.SimpleValueColumnFetcher import org.grails.orm.hibernate.cfg.domainbinding.binder.CollectionBinder import org.grails.orm.hibernate.cfg.domainbinding.binder.ClassBinder @@ -65,7 +66,7 @@ class CollectionBinderSpec extends HibernateGormDatastoreSpec { SimpleValueColumnFetcher simpleValueColumnFetcher = new SimpleValueColumnFetcher() CompositeIdentifierToManyToOneBinder compositeIdentifierToManyToOneBinder = new CompositeIdentifierToManyToOneBinder( - new org.grails.orm.hibernate.cfg.domainbinding.util.ForeignKeyColumnCountCalculator(), + new ForeignKeyColumnCountCalculator(), namingStrategy, defaultColumnNameFetcher, backticksRemover, @@ -123,10 +124,10 @@ class CollectionBinderSpec extends HibernateGormDatastoreSpec { SingleTableSubclassBinder singleTableSubclassBinder = new SingleTableSubclassBinder(classBinder, metadataBuildingContext) SubclassMappingBinder subclassMappingBinder = new SubclassMappingBinder(joinedSubClassBinder, unionSubclassBinder, singleTableSubclassBinder, classPropertiesBinder) - SubClassBinder subClassBinder = new SubClassBinder(binder.getMappingCacheHolder(), subclassMappingBinder, multiTenantFilterBinder, "dataSource") + SubClassBinder subClassBinder = new SubClassBinder(subclassMappingBinder, multiTenantFilterBinder, "dataSource") RootPersistentClassCommonValuesBinder rootPersistentClassCommonValuesBinder = new RootPersistentClassCommonValuesBinder(metadataBuildingContext, namingStrategy, identityBinder, versionBinder, classBinder, classPropertiesBinder, getCollector()) DiscriminatorPropertyBinder discriminatorPropertyBinder = new DiscriminatorPropertyBinder(metadataBuildingContext, binder.getMappingCacheHolder(), new org.grails.orm.hibernate.cfg.domainbinding.binder.ConfiguredDiscriminatorBinder(new org.grails.orm.hibernate.cfg.domainbinding.binder.SimpleValueColumnBinder(), new ColumnConfigToColumnBinder()), new org.grails.orm.hibernate.cfg.domainbinding.binder.DefaultDiscriminatorBinder(new org.grails.orm.hibernate.cfg.domainbinding.binder.Si [...] - RootBinder rootBinder = new RootBinder("default", multiTenantFilterBinder, subClassBinder, rootPersistentClassCommonValuesBinder, discriminatorPropertyBinder, getCollector()) + RootBinder rootBinder = new RootBinder("default", multiTenantFilterBinder, subClassBinder, rootPersistentClassCommonValuesBinder, discriminatorPropertyBinder, getCollector(), binder.getMappingCacheHolder()) return [ propertyBinder: propertyBinder, 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 83fe0f3cee..91f589b2cd 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 @@ -189,10 +189,10 @@ class GrailsPropertyBinderSpec extends HibernateGormDatastoreSpec { SingleTableSubclassBinder singleTableSubclassBinder = new SingleTableSubclassBinder(classBinder, metadataBuildingContext) SubclassMappingBinder subclassMappingBinder = new SubclassMappingBinder(joinedSubClassBinder, unionSubclassBinder, singleTableSubclassBinder, classPropertiesBinder) - SubClassBinder subClassBinder = new SubClassBinder(binder.getMappingCacheHolder(), subclassMappingBinder, multiTenantFilterBinder, "dataSource") + SubClassBinder subClassBinder = new SubClassBinder(subclassMappingBinder, multiTenantFilterBinder, "dataSource") RootPersistentClassCommonValuesBinder rootPersistentClassCommonValuesBinder = new RootPersistentClassCommonValuesBinder(metadataBuildingContext, namingStrategy, identityBinder, versionBinder, classBinder, classPropertiesBinder, collector) DiscriminatorPropertyBinder discriminatorPropertyBinder = new DiscriminatorPropertyBinder(metadataBuildingContext, binder.getMappingCacheHolder(), new org.grails.orm.hibernate.cfg.domainbinding.binder.ConfiguredDiscriminatorBinder(new org.grails.orm.hibernate.cfg.domainbinding.binder.SimpleValueColumnBinder(), new ColumnConfigToColumnBinder()), new org.grails.orm.hibernate.cfg.domainbinding.binder.DefaultDiscriminatorBinder(new org.grails.orm.hibernate.cfg.domainbinding.binder.Si [...] - RootBinder rootBinder = new RootBinder("default", multiTenantFilterBinder, subClassBinder, rootPersistentClassCommonValuesBinder, discriminatorPropertyBinder, collector) + RootBinder rootBinder = new RootBinder("default", multiTenantFilterBinder, subClassBinder, rootPersistentClassCommonValuesBinder, discriminatorPropertyBinder, collector, binder.getMappingCacheHolder()) return [ propertyBinder: propertyBinder, diff --git a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootBinderSpec.groovy b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootBinderSpec.groovy index d5753dead0..67ca347eb1 100644 --- a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootBinderSpec.groovy +++ b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootBinderSpec.groovy @@ -19,25 +19,28 @@ class RootBinderSpec extends HibernateGormDatastoreSpec { MetadataBuildingContext metadataBuildingContext PersistentEntityNamingStrategy namingStrategy def sharedCollector + org.grails.orm.hibernate.cfg.MappingCacheHolder mappingCacheHolder void setup() { def gdb = getGrailsDomainBinder() metadataBuildingContext = gdb.getMetadataBuildingContext() namingStrategy = gdb.getNamingStrategy() sharedCollector = getCollector() - + mappingCacheHolder = Mock(org.grails.orm.hibernate.cfg.MappingCacheHolder) + multiTenantFilterBinder = Mock(MultiTenantFilterBinder) subClassBinder = Mock(SubClassBinder) rootPersistentClassCommonValuesBinder = Mock(RootPersistentClassCommonValuesBinder) discriminatorPropertyBinder = Mock(DiscriminatorPropertyBinder) - + binder = new RootBinder( "default", multiTenantFilterBinder, subClassBinder, rootPersistentClassCommonValuesBinder, discriminatorPropertyBinder, - sharedCollector + sharedCollector, + mappingCacheHolder ) } @@ -85,6 +88,7 @@ class RootBinderSpec extends HibernateGormDatastoreSpec { then: 1 * rootPersistentClassCommonValuesBinder.bindRoot(entity) >> rootClass + 1 * mappingCacheHolder.cacheMapping(childEntity) 1 * discriminatorPropertyBinder.bindDiscriminatorProperty(rootClass) 1 * subClassBinder.bindSubClass(childEntity, rootClass) >> [] 1 * multiTenantFilterBinder.bind(entity, rootClass) @@ -105,6 +109,6 @@ class RootBinderSpec extends HibernateGormDatastoreSpec { binder.bindRoot(entity) then: - 0 * rootPersistentClassCommonValuesBinder.bindRoot(_, _) + 0 * rootPersistentClassCommonValuesBinder.bindRoot(_) } } diff --git a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubClassBinderSpec.groovy b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubClassBinderSpec.groovy index b425102b7d..e0cb85da01 100644 --- a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubClassBinderSpec.groovy +++ b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubClassBinderSpec.groovy @@ -27,7 +27,6 @@ class SubClassBinderSpec extends HibernateGormDatastoreSpec { multiTenantFilterBinder = Mock(MultiTenantFilterBinder) binder = new SubClassBinder( - mappingCacheHolder, subclassMappingBinder, multiTenantFilterBinder, "default" @@ -52,7 +51,6 @@ class SubClassBinderSpec extends HibernateGormDatastoreSpec { then: 1 * subclassMappingBinder.createSubclassMapping(subEntity, rootClass) >> subClass 1 * multiTenantFilterBinder.bind(subEntity, subClass) - rootClass.getSubclasses().contains(subClass) results == [subClass] } @@ -68,7 +66,7 @@ class SubClassBinderSpec extends HibernateGormDatastoreSpec { def rootClass = new RootClass(metadataBuildingContext) rootClass.setEntityName("Parent") rootClass.setJpaEntityName("Parent") - + def subClass = new org.hibernate.mapping.SingleTableSubclass(rootClass, metadataBuildingContext) subClass.setEntityName("Child") subClass.setJpaEntityName("Child") @@ -83,8 +81,6 @@ class SubClassBinderSpec extends HibernateGormDatastoreSpec { 1 * subclassMappingBinder.createSubclassMapping(subEntity, rootClass) >> subClass 1 * subclassMappingBinder.createSubclassMapping(grandChildEntity, subClass) >> grandChildSubClass 2 * multiTenantFilterBinder.bind(_, _) - rootClass.getSubclasses().contains(subClass) - subClass.getSubclasses().contains(grandChildSubClass) results == [subClass, grandChildSubClass] } } 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 2ac277a0e1..bfbf04d353 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 @@ -125,10 +125,10 @@ class ListSecondPassBinderSpec extends HibernateGormDatastoreSpec { SingleTableSubclassBinder singleTableSubclassBinder = new SingleTableSubclassBinder(classBinder, metadataBuildingContext) SubclassMappingBinder subclassMappingBinder = new SubclassMappingBinder(joinedSubClassBinder, unionSubclassBinder, singleTableSubclassBinder, classPropertiesBinder) - SubClassBinder subClassBinder = new SubClassBinder(binder.getMappingCacheHolder(), subclassMappingBinder, multiTenantFilterBinder, "dataSource") + SubClassBinder subClassBinder = new SubClassBinder(subclassMappingBinder, multiTenantFilterBinder, "dataSource") RootPersistentClassCommonValuesBinder rootPersistentClassCommonValuesBinder = new RootPersistentClassCommonValuesBinder(metadataBuildingContext, namingStrategy, identityBinder, versionBinder, classBinder, classPropertiesBinder, collector) DiscriminatorPropertyBinder discriminatorPropertyBinder = new DiscriminatorPropertyBinder(metadataBuildingContext, binder.getMappingCacheHolder(), new org.grails.orm.hibernate.cfg.domainbinding.binder.ConfiguredDiscriminatorBinder(new org.grails.orm.hibernate.cfg.domainbinding.binder.SimpleValueColumnBinder(), new ColumnConfigToColumnBinder()), new org.grails.orm.hibernate.cfg.domainbinding.binder.DefaultDiscriminatorBinder(new org.grails.orm.hibernate.cfg.domainbinding.binder.Si [...] - RootBinder rootBinder = new RootBinder("default", multiTenantFilterBinder, subClassBinder, rootPersistentClassCommonValuesBinder, discriminatorPropertyBinder, collector) + RootBinder rootBinder = new RootBinder("default", multiTenantFilterBinder, subClassBinder, rootPersistentClassCommonValuesBinder, discriminatorPropertyBinder, collector, binder.getMappingCacheHolder()) return [ propertyBinder: propertyBinder, 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 9f1f85697e..63fc272fa5 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 @@ -123,10 +123,10 @@ class MapSecondPassBinderSpec extends HibernateGormDatastoreSpec { SingleTableSubclassBinder singleTableSubclassBinder = new SingleTableSubclassBinder(classBinder, metadataBuildingContext) SubclassMappingBinder subclassMappingBinder = new SubclassMappingBinder(joinedSubClassBinder, unionSubclassBinder, singleTableSubclassBinder, classPropertiesBinder) - SubClassBinder subClassBinder = new SubClassBinder(binder.getMappingCacheHolder(), subclassMappingBinder, multiTenantFilterBinder, "dataSource") + SubClassBinder subClassBinder = new SubClassBinder(subclassMappingBinder, multiTenantFilterBinder, "dataSource") RootPersistentClassCommonValuesBinder rootPersistentClassCommonValuesBinder = new RootPersistentClassCommonValuesBinder(metadataBuildingContext, namingStrategy, identityBinder, versionBinder, classBinder, classPropertiesBinder, getCollector()) DiscriminatorPropertyBinder discriminatorPropertyBinder = new DiscriminatorPropertyBinder(metadataBuildingContext, binder.getMappingCacheHolder(), new org.grails.orm.hibernate.cfg.domainbinding.binder.ConfiguredDiscriminatorBinder(new org.grails.orm.hibernate.cfg.domainbinding.binder.SimpleValueColumnBinder(), new ColumnConfigToColumnBinder()), new org.grails.orm.hibernate.cfg.domainbinding.binder.DefaultDiscriminatorBinder(new org.grails.orm.hibernate.cfg.domainbinding.binder.Si [...] - RootBinder rootBinder = new RootBinder("default", multiTenantFilterBinder, subClassBinder, rootPersistentClassCommonValuesBinder, discriminatorPropertyBinder, getCollector()) + RootBinder rootBinder = new RootBinder("default", multiTenantFilterBinder, subClassBinder, rootPersistentClassCommonValuesBinder, discriminatorPropertyBinder, getCollector(), binder.getMappingCacheHolder()) return [ propertyBinder: propertyBinder,
