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); }
