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 eda096baa28b06659385bbc81928c8f29f9bf418 Author: Walter Duque de Estrada <[email protected]> AuthorDate: Thu Feb 19 07:18:40 2026 -0600 cleanup --- .../secondpass/CollectionWithJoinTableBinder.java | 33 +++++++++------------- .../secondpass/DependentKeyValueBinderSpec.groovy | 1 + 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/CollectionWithJoinTableBinder.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/CollectionWithJoinTableBinder.java index ff8598a2dc..b3bfa442e9 100644 --- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/CollectionWithJoinTableBinder.java +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/CollectionWithJoinTableBinder.java @@ -78,13 +78,12 @@ public class CollectionWithJoinTableBinder { var joinColumnMappingOptional = Optional.ofNullable(property.getMappedForm()).map(PropertyConfig::getJoinTableColumnConfig); if (isBasicCollectionType) { final Class<?> referencedType = ((Basic) property).getComponentType(); - String className = referencedType.getName(); final boolean isEnum = referencedType.isEnum(); if (joinColumnMappingOptional.isPresent()) { columnName = joinColumnMappingOptional.get().getName(); } else { - var clazz = namingStrategy.resolveColumnName(className); + var clazz = namingStrategy.resolveColumnName(referencedType.getName()); var prop = namingStrategy.resolveTableName(property.getName()); columnName = isEnum ? clazz : new BackticksRemover().apply(prop) + UNDERSCORE + new BackticksRemover().apply(clazz); } @@ -105,26 +104,22 @@ public class CollectionWithJoinTableBinder { } } } else { - final GrailsHibernatePersistentEntity domainClass = property.getHibernateAssociatedEntity(); + final var domainClass = property.getHibernateAssociatedEntity(); - Mapping m = null; if (domainClass != null) { - m = domainClass.getMappedForm(); - } - if (m != null && m.hasCompositeIdentifier()) { - CompositeIdentity ci = (CompositeIdentity) m.getIdentity(); - compositeIdentifierToManyToOneBinder.bindCompositeIdentifierToManyToOne(property, element, ci, domainClass, EMPTY_PATH); - } - else { - if (joinColumnMappingOptional.isPresent()) { - columnName = joinColumnMappingOptional.get().getName(); - } - else { - var decapitalize = domainClass.getHibernateRootEntity().getJavaClass().getSimpleName(); - columnName = namingStrategy.resolveColumnName(decapitalize) + FOREIGN_KEY_SUFFIX; + if (domainClass.getHibernateCompositeIdentity().isPresent()) { + CompositeIdentity ci = domainClass.getHibernateCompositeIdentity().get(); + compositeIdentifierToManyToOneBinder.bindCompositeIdentifierToManyToOne(property, element, ci, domainClass, EMPTY_PATH); + } else { + if (joinColumnMappingOptional.isPresent()) { + columnName = joinColumnMappingOptional.get().getName(); + } else { + var decapitalize = domainClass.getHibernateRootEntity().getJavaClass().getSimpleName(); + columnName = namingStrategy.resolveColumnName(decapitalize) + FOREIGN_KEY_SUFFIX; + } + + simpleValueColumnBinder.bindSimpleValue(element, "long", columnName, true); } - - simpleValueColumnBinder.bindSimpleValue(element, "long", columnName, true); } } diff --git a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/DependentKeyValueBinderSpec.groovy b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/DependentKeyValueBinderSpec.groovy index c11b0231bd..2a2fe3b9d2 100644 --- a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/DependentKeyValueBinderSpec.groovy +++ b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/DependentKeyValueBinderSpec.groovy @@ -4,6 +4,7 @@ import grails.gorm.annotation.Entity import grails.gorm.specs.HibernateGormDatastoreSpec import org.grails.orm.hibernate.cfg.CompositeIdentity import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentEntity +import org.grails.orm.hibernate.cfg.Mapping import org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateToManyProperty import org.grails.orm.hibernate.cfg.domainbinding.binder.CompositeIdentifierToManyToOneBinder import org.grails.orm.hibernate.cfg.domainbinding.binder.SimpleValueBinder
