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 917fff9626799f39b1a7960161aef805df30785e
Author: Walter Duque de Estrada <[email protected]>
AuthorDate: Wed Feb 11 17:31:11 2026 -0600

    Fix getRootMapping on GrailsHibernatePersistentEntity
---
 .../cfg/GrailsHibernatePersistentEntity.java       | 24 ++++++----------------
 .../secondpass/CollectionSecondPassBinder.java     |  8 ++------
 2 files changed, 8 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 29953dea35..c7d647f7f3 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
@@ -3,19 +3,14 @@ package org.grails.orm.hibernate.cfg;
 import java.util.List;
 import java.util.Objects;
 import java.util.Optional;
-import java.util.function.Function;
 
 import jakarta.annotation.Nonnull;
 
-import org.hibernate.boot.model.naming.Identifier;
-import org.hibernate.boot.model.relational.Database;
-import org.hibernate.boot.model.relational.Namespace;
 import org.hibernate.boot.spi.InFlightMetadataCollector;
 
 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;
 import org.grails.orm.hibernate.cfg.domainbinding.NamespaceNameExtractor;
@@ -26,25 +21,18 @@ import 
org.grails.orm.hibernate.cfg.domainbinding.NamespaceNameExtractor;
 public interface GrailsHibernatePersistentEntity extends PersistentEntity {
     Mapping getMappedForm();
 
-    default GrailsHibernatePersistentEntity getHibernateRootEntity() {
-        PersistentEntity root = getRootEntity();
-        if (root instanceof GrailsHibernatePersistentEntity) {
-            return (GrailsHibernatePersistentEntity) root;
-        }
-        return null;
+
+    @Nonnull default GrailsHibernatePersistentEntity getHibernateRootEntity() {
+        return  (GrailsHibernatePersistentEntity) getRootEntity();
     }
 
     default Mapping getRootMapping() {
-        GrailsHibernatePersistentEntity root = getHibernateRootEntity();
-        if (root != null) {
-            return root.getMappedForm();
-        }
-        return null;
+        return getHibernateRootEntity().getMappedForm();
     }
 
     default boolean isTablePerHierarchySubclass() {
-        Mapping ownerMapping = getMappedForm();
-        return !this.isRoot() && (ownerMapping == null || 
ownerMapping.getTablePerHierarchy());
+        Mapping rootMapping = getRootMapping();
+        return !this.isRoot() && (rootMapping == null || 
rootMapping.getTablePerHierarchy());
     }
 
     @Override
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 9f05436121..24437f3369 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
@@ -23,7 +23,6 @@ import 
org.grails.orm.hibernate.cfg.domainbinding.SimpleValueColumnFetcher;
 
 import org.hibernate.FetchMode;
 import org.hibernate.MappingException;
-import org.hibernate.boot.model.internal.BinderHelper;
 import org.hibernate.boot.spi.InFlightMetadataCollector;
 import org.hibernate.boot.spi.MetadataBuildingContext;
 import org.hibernate.mapping.*;
@@ -91,10 +90,7 @@ public class CollectionSecondPassBinder {
         // Configure one-to-many
         if (collection.isOneToMany()) {
 
-            Mapping m = referenced != null ? referenced.getRootMapping() : 
null;
-            boolean tablePerSubclass = m != null && !m.getTablePerHierarchy();
-
-            if (referenced != null && !referenced.isRoot() && 
!tablePerSubclass) {
+            if (referenced != null && 
referenced.isTablePerHierarchySubclass()) {
                 Mapping rootMapping = referenced.getRootMapping();
                 //TODO FIXME
                 String discriminatorColumnName = 
JPA_DEFAULT_DISCRIMINATOR_TYPE;
@@ -491,7 +487,7 @@ public class CollectionSecondPassBinder {
                 discriminator = discriminatorConfig.getValue();
             }
         }
-        Mapping rootMapping = domainClass != null ? 
domainClass.getRootMapping() : null;
+        Mapping rootMapping = 
domainClass.getHibernateRootEntity().getMappedForm();
         String quote = "'";
         if (rootMapping != null && rootMapping.getDatasources() != null) {
             DiscriminatorConfig discriminatorConfig = 
rootMapping.getDiscriminator();

Reply via email to