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

borinquenkid pushed a commit to branch 8.0.x-hibernate7
in repository https://gitbox.apache.org/repos/asf/grails-core.git
commit 8c8ff2a3bfdc0d09044a22c6044b489de91d7532
Author: Walter Duque de Estrada <[email protected]>
AuthorDate: Sat Feb 7 19:36:29 2026 -0600

    A little bit of cleanup
---
 .../cfg/GrailsHibernatePersistentEntity.java         |  9 +++++++++
 .../cfg/domainbinding/CollectionBinder.java          |  9 +++++----
 .../secondpass/CollectionSecondPassBinder.java       | 20 +++-----------------
 .../secondpass/ListSecondPassBinder.java             |  8 ++++++--
 .../domainbinding/ListSecondPassBinderSpec.groovy    |  3 ++-
 5 files changed, 25 insertions(+), 24 deletions(-)

diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsHibernatePersistentEntity.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsHibernatePersistentEntity.java
index 8c0f985476..659f8a476a 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsHibernatePersistentEntity.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsHibernatePersistentEntity.java
@@ -7,7 +7,9 @@ import java.util.Optional;
 import org.grails.datastore.mapping.model.PersistentEntity;
 import org.grails.datastore.mapping.model.PersistentProperty;
 import org.grails.datastore.mapping.model.config.GormProperties;
+import org.grails.datastore.mapping.model.types.TenantId;
 import 
org.grails.orm.hibernate.cfg.domainbinding.ConfigureDerivedPropertiesConsumer;
+import org.grails.orm.hibernate.cfg.domainbinding.DefaultColumnNameFetcher;
 
 /**
  * Common interface for Hibernate persistent entities
@@ -80,4 +82,11 @@ public interface GrailsHibernatePersistentEntity extends 
PersistentEntity {
         getPersistentProperties().forEach(new 
ConfigureDerivedPropertiesConsumer( getMappedForm()));
     }
 
+    default String getMultiTenantFilterCondition(DefaultColumnNameFetcher 
fetcher) {
+        return Optional.ofNullable(getTenantId())
+                .map(fetcher::getDefaultColumnName)
+                .map(defaultColumnName -> ":tenantId = " + defaultColumnName)
+                .orElse(null);
+    }
+
 }
\ No newline at end of file
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/CollectionBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/CollectionBinder.java
index 4d25a77699..1b2db21cc2 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/CollectionBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/CollectionBinder.java
@@ -27,8 +27,6 @@ import org.hibernate.mapping.Table;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.Map;
-
 /**
  * Handles the binding of collections to the Hibernate runtime meta model.
  */
@@ -42,14 +40,17 @@ public class CollectionBinder {
     private final ListSecondPassBinder listSecondPassBinder;
     private final CollectionSecondPassBinder collectionSecondPassBinder;
     private final MapSecondPassBinder mapSecondPassBinder;
+    private final DefaultColumnNameFetcher defaultColumnNameFetcher;
 
     public CollectionBinder(MetadataBuildingContext metadataBuildingContext, 
GrailsDomainBinder grailsDomainBinder, PersistentEntityNamingStrategy 
namingStrategy) {
         this.metadataBuildingContext = metadataBuildingContext;
         this.grailsDomainBinder = grailsDomainBinder;
         this.namingStrategy = namingStrategy;
         this.collectionSecondPassBinder = new 
CollectionSecondPassBinder(metadataBuildingContext, namingStrategy);
-        this.listSecondPassBinder = new 
ListSecondPassBinder(metadataBuildingContext, collectionSecondPassBinder);
+        this.listSecondPassBinder = new 
ListSecondPassBinder(metadataBuildingContext, 
namingStrategy,collectionSecondPassBinder);
         this.mapSecondPassBinder = new 
MapSecondPassBinder(metadataBuildingContext, namingStrategy, 
collectionSecondPassBinder);
+        this.defaultColumnNameFetcher = new 
DefaultColumnNameFetcher(namingStrategy);
+
     }
 
     /**
@@ -161,7 +162,7 @@ public class CollectionBinder {
 
 
     public String 
getMultiTenantFilterCondition(GrailsHibernatePersistentEntity referenced) {
-        return 
collectionSecondPassBinder.getMultiTenantFilterCondition(referenced);
+        return 
referenced.getMultiTenantFilterCondition(defaultColumnNameFetcher);
     }
 
 
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/CollectionSecondPassBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/CollectionSecondPassBinder.java
index 2d493c6e69..383f1a07bb 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/CollectionSecondPassBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/CollectionSecondPassBinder.java
@@ -8,7 +8,6 @@ import org.grails.datastore.mapping.model.config.GormProperties;
 import org.grails.datastore.mapping.model.types.Association;
 import org.grails.datastore.mapping.model.types.Basic;
 import org.grails.datastore.mapping.model.types.ManyToMany;
-import org.grails.datastore.mapping.model.types.TenantId;
 import org.grails.orm.hibernate.cfg.*;
 import org.grails.orm.hibernate.cfg.domainbinding.BackticksRemover;
 import 
org.grails.orm.hibernate.cfg.domainbinding.CollectionForPropertyConfigBinder;
@@ -47,15 +46,14 @@ public class CollectionSecondPassBinder {
 
     private final MetadataBuildingContext metadataBuildingContext;
     private final PersistentEntityNamingStrategy namingStrategy;
+    private final DefaultColumnNameFetcher defaultColumnNameFetcher;
 
     public CollectionSecondPassBinder(MetadataBuildingContext 
metadataBuildingContext, PersistentEntityNamingStrategy namingStrategy) {
         this.metadataBuildingContext = metadataBuildingContext;
         this.namingStrategy = namingStrategy;
+        this.defaultColumnNameFetcher = new 
DefaultColumnNameFetcher(namingStrategy);
     }
 
-    public PersistentEntityNamingStrategy getNamingStrategy() {
-        return namingStrategy;
-    }
 
     public void bindCollectionSecondPass(HibernateToManyProperty property, 
@Nonnull InFlightMetadataCollector mappings,
                                          java.util.Map<?, ?> 
persistentClasses, Collection collection, String sessionFactoryBeanName) {
@@ -138,7 +136,7 @@ public class CollectionSecondPassBinder {
 
         final boolean isManyToMany = property instanceof ManyToMany;
         if(referenced != null && !isManyToMany && referenced.isMultiTenant()) {
-            String filterCondition = getMultiTenantFilterCondition(referenced);
+            String filterCondition = 
referenced.getMultiTenantFilterCondition(defaultColumnNameFetcher);
             if(filterCondition != null) {
                 if (property.isUnidirectionalOneToMany()) {
                     
collection.addManyToManyFilter(GormProperties.TENANT_IDENTITY, filterCondition, 
true, Collections.emptyMap(), Collections.emptyMap());
@@ -577,16 +575,4 @@ public class CollectionSecondPassBinder {
         return false;
     }
 
-    public String 
getMultiTenantFilterCondition(GrailsHibernatePersistentEntity referenced) {
-        TenantId tenantId = referenced.getTenantId();
-        if(tenantId != null) {
-
-            String defaultColumnName = new 
DefaultColumnNameFetcher(namingStrategy).getDefaultColumnName(tenantId);
-            return ":tenantId = " + defaultColumnName;
-        }
-        else {
-            return null;
-        }
-    }
-
 }
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/ListSecondPassBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/ListSecondPassBinder.java
index 171e2f94fe..9bfe9b9c95 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/ListSecondPassBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/ListSecondPassBinder.java
@@ -5,6 +5,7 @@ import org.grails.datastore.mapping.model.PersistentEntity;
 import org.grails.datastore.mapping.model.types.ManyToMany;
 import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentProperty;
 import org.grails.orm.hibernate.cfg.HibernateToManyProperty;
+import org.grails.orm.hibernate.cfg.PersistentEntityNamingStrategy;
 import org.grails.orm.hibernate.cfg.domainbinding.BackticksRemover;
 import org.grails.orm.hibernate.cfg.domainbinding.SimpleValueColumnBinder;
 
@@ -33,17 +34,20 @@ public class ListSecondPassBinder {
 
     private final MetadataBuildingContext metadataBuildingContext;
     private final CollectionSecondPassBinder collectionSecondPassBinder;
+    private final PersistentEntityNamingStrategy namingStrategy;
 
-    public ListSecondPassBinder(MetadataBuildingContext 
metadataBuildingContext, CollectionSecondPassBinder collectionSecondPassBinder) 
{
+    public ListSecondPassBinder(MetadataBuildingContext metadataBuildingContext
+            , PersistentEntityNamingStrategy namingStrategy, 
CollectionSecondPassBinder collectionSecondPassBinder) {
         this.metadataBuildingContext = metadataBuildingContext;
         this.collectionSecondPassBinder = collectionSecondPassBinder;
+        this.namingStrategy = namingStrategy;
     }
 
     public void bindListSecondPass(HibernateToManyProperty property, @Nonnull 
InFlightMetadataCollector mappings,
                                    Map<?, ?> persistentClasses, 
org.hibernate.mapping.List list, String sessionFactoryBeanName) {
 
         collectionSecondPassBinder.bindCollectionSecondPass(property, 
mappings, persistentClasses, list, sessionFactoryBeanName);
-        String columnName = 
property.getIndexColumnName(collectionSecondPassBinder.getNamingStrategy());
+        String columnName = property.getIndexColumnName(namingStrategy);
         final boolean isManyToMany = property instanceof ManyToMany;
 
         if (isManyToMany && !property.isOwningSide()) {
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ListSecondPassBinderSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ListSecondPassBinderSpec.groovy
index 9f7ac201df..1db469a48f 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ListSecondPassBinderSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ListSecondPassBinderSpec.groovy
@@ -26,7 +26,8 @@ class ListSecondPassBinderSpec extends 
HibernateGormDatastoreSpec {
         def binder = getGrailsDomainBinder()
         def collectionBinder = binder.getCollectionBinder()
         def collectionSecondPassBinder = new 
CollectionSecondPassBinder(binder.getMetadataBuildingContext(), 
binder.getNamingStrategy())
-        def listSecondPassBinder = new 
ListSecondPassBinder(binder.getMetadataBuildingContext(), 
collectionSecondPassBinder)
+        def namingStrategy = binder.getNamingStrategy()
+        def listSecondPassBinder = new 
ListSecondPassBinder(binder.getMetadataBuildingContext(),namingStrategy, 
collectionSecondPassBinder)
 
         def authorEntity = getPersistentEntity(ListBinderAuthor) as 
GrailsHibernatePersistentEntity
         def bookEntity = getPersistentEntity(ListBinderBook) as 
GrailsHibernatePersistentEntity

Reply via email to