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 10260ee3fb306f60ebaf2246f64e105b3b6d3e5c
Author: Walter Duque de Estrada <[email protected]>
AuthorDate: Sat Feb 7 20:24:23 2026 -0600

    Assign GrailsHibernatePersistentEntity to TableNameFetcher
---
 .../org/grails/orm/hibernate/HibernateGormInstanceApi.groovy       | 5 +++--
 .../groovy/org/grails/orm/hibernate/cfg/GrailsDomainBinder.java    | 2 +-
 .../grails/orm/hibernate/cfg/domainbinding/CollectionBinder.java   | 4 +---
 .../cfg/domainbinding/CompositeIdentifierToManyToOneBinder.java    | 3 ++-
 .../orm/hibernate/cfg/domainbinding/TableForManyCalculator.java    | 2 +-
 .../grails/orm/hibernate/cfg/domainbinding/TableNameFetcher.java   | 7 ++-----
 6 files changed, 10 insertions(+), 13 deletions(-)

diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/HibernateGormInstanceApi.groovy
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/HibernateGormInstanceApi.groovy
index 9217cce561..e25490be93 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/HibernateGormInstanceApi.groovy
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/HibernateGormInstanceApi.groovy
@@ -252,8 +252,9 @@ class HibernateGormInstanceApi<D> extends 
GormInstanceApi<D> {
 
     @Override
     D attach(D instance) {
-        hibernateTemplate.lock(instance, LockMode.NONE)
-        return instance
+        return (D) hibernateTemplate.execute { Session session ->
+            return session.merge(instance)
+        }
     }
 
     @Override
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsDomainBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsDomainBinder.java
index 280dae2d33..1443580bcb 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsDomainBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsDomainBinder.java
@@ -315,7 +315,7 @@ public class GrailsDomainBinder
             TenantId tenantId = entity.getTenantId();
 
             if (tenantId != null) {
-                String filterCondition = 
collectionBinder.getMultiTenantFilterCondition(entity);
+                String filterCondition = 
entity.getMultiTenantFilterCondition(new 
DefaultColumnNameFetcher(getNamingStrategy()));
 
                 persistentClass.addFilter(
                         GormProperties.TENANT_IDENTITY,
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 1b2db21cc2..8e9a362249 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
@@ -161,9 +161,7 @@ public class CollectionBinder {
 
 
 
-    public String 
getMultiTenantFilterCondition(GrailsHibernatePersistentEntity referenced) {
-        return 
referenced.getMultiTenantFilterCondition(defaultColumnNameFetcher);
-    }
+
 
 
 }
\ No newline at end of file
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/CompositeIdentifierToManyToOneBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/CompositeIdentifierToManyToOneBinder.java
index 41b85f224b..63fdad780d 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/CompositeIdentifierToManyToOneBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/CompositeIdentifierToManyToOneBinder.java
@@ -10,6 +10,7 @@ import org.grails.datastore.mapping.model.types.Association;
 import org.grails.datastore.mapping.model.types.ToOne;
 import org.grails.orm.hibernate.cfg.ColumnConfig;
 import org.grails.orm.hibernate.cfg.CompositeIdentity;
+import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentEntity;
 import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentProperty;
 import org.grails.orm.hibernate.cfg.PersistentEntityNamingStrategy;
 
@@ -71,7 +72,7 @@ public class CompositeIdentifierToManyToOneBinder {
                 // if the name is null then configure the name by convention
                 if (cc.getName() == null) {
                     // use the referenced table name as a prefix
-                    String prefix = 
tableNameFetcher.getTableName(refDomainClass);
+                    String prefix = 
tableNameFetcher.getTableName((GrailsHibernatePersistentEntity) refDomainClass);
                     PersistentProperty referencedProperty = 
refDomainClass.getPropertyByName(propertyName);
 
                     // if the referenced property is a ToOne and it has a 
composite id
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/TableForManyCalculator.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/TableForManyCalculator.java
index a123543039..695d1ff65e 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/TableForManyCalculator.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/TableForManyCalculator.java
@@ -53,7 +53,7 @@ public class TableForManyCalculator {
         JoinTable jt = config.getJoinTable();
         boolean hasJoinTableMapping = jt != null && jt.getName() != null;
         PersistentEntity domainClass1 = property.getOwner();
-        String left = tableNameFetcher.getTableName(domainClass1);
+        String left = 
tableNameFetcher.getTableName((GrailsHibernatePersistentEntity) domainClass1);
 
         if (Map.class.isAssignableFrom(property.getType())) {
             if (hasJoinTableMapping) {
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/TableNameFetcher.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/TableNameFetcher.java
index d928dd5bf1..c6b2fdcb33 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/TableNameFetcher.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/TableNameFetcher.java
@@ -17,11 +17,8 @@ public class TableNameFetcher {
         this.persistentEntityNamingStrategy = persistentEntityNamingStrategy;
     }
 
-    public String getTableName(PersistentEntity domainClass) {
-        Mapping result = null;
-        if (domainClass instanceof GrailsHibernatePersistentEntity) {
-            result = ((GrailsHibernatePersistentEntity) 
domainClass).getMappedForm();
-        }
+    public String getTableName(GrailsHibernatePersistentEntity domainClass) {
+        Mapping result = domainClass.getMappedForm();
         var tableName = result != null ? result.getTableName() : null;
         return tableName != null ? tableName  
:persistentEntityNamingStrategy.resolveTableName(domainClass);
     }

Reply via email to