You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@grails.apache.org by bo...@apache.org on 2026/03/14 22:49:36 UTC
(grails-core) 08/15: hibernate 7: refactoring RootBinder
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 <wb...@mac.com>
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,