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 5cc4dcac05fde8898038231b72aca6808d0cc4c0
Author: Walter Duque de Estrada <[email protected]>
AuthorDate: Sat Feb 28 21:59:12 2026 -0600

    refactor Mapping calss
---
 .../groovy/org/grails/orm/hibernate/cfg/Mapping.groovy   | 12 ++++++++++++
 .../hibernate/cfg/domainbinding/binder/ColumnBinder.java | 11 +----------
 .../cfg/domainbinding/binder/SubClassBinder.java         |  9 +--------
 .../cfg/domainbinding/binder/SubclassMappingBinder.java  |  4 ++--
 .../hibernate/GrailsHibernatePersistentEntity.java       | 16 ++++++++++------
 5 files changed, 26 insertions(+), 26 deletions(-)

diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/Mapping.groovy
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/Mapping.groovy
index 897a358724..b250a2c714 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/Mapping.groovy
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/Mapping.groovy
@@ -140,6 +140,18 @@ class Mapping extends Entity<PropertyConfig> {
     String comment
 
 
+    boolean isTablePerHierarchy() {
+        return tablePerHierarchy
+    }
+
+    boolean isJoinedSubclass() {
+        return !tablePerHierarchy && !tablePerConcreteClass
+    }
+
+    boolean isUnionSubclass() {
+        return tablePerConcreteClass
+    }
+
     boolean isTablePerConcreteClass() {
         return tablePerConcreteClass
     }
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ColumnBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ColumnBinder.java
index 29cb7402aa..4a5a055603 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ColumnBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ColumnBinder.java
@@ -76,14 +76,6 @@ public class ColumnBinder {
         new IndexBinder());
   }
 
-  /** Protected constructor for testing purposes. */
-  protected ColumnBinder() {
-    this.columnNameForPropertyAndPathFetcher = null;
-    this.stringColumnConstraintsBinder = null;
-    this.numericColumnConstraintsBinder = null;
-    this.createKeyForProps = null;
-    this.indexBinder = null;
-  }
 
   /**
    * Binds a Column instance to the Hibernate meta model
@@ -154,8 +146,7 @@ public class ColumnBinder {
 
     var owner = property.getHibernateOwner();
     if (!owner.isRoot()) {
-      Mapping mapping = owner.getMappedForm();
-      if (mapping != null && mapping.getTablePerHierarchy()) {
+      if (owner.isTablePerHierarchy()) {
         if (LOG.isDebugEnabled())
           LOG.debug(
               "[GrailsDomainBinder] Sub class property ["
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubClassBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubClassBinder.java
index b1049a5e4b..f73424b2c5 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubClassBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubClassBinder.java
@@ -65,17 +65,10 @@ public class SubClassBinder {
       Mapping m) {
     mappingCacheHolder.cacheMapping(sub);
     Subclass subClass = subclassMappingBinder.createSubclassMapping(sub, 
parent, mappings, m);
-
     parent.addSubclass(subClass);
     mappings.addEntityBinding(subClass);
-
     bindMultiTenantFilter(sub, subClass);
-
-    Collection<GrailsHibernatePersistentEntity> children = 
sub.getChildEntities(dataSourceName);
-    if (!children.isEmpty()) {
-      // bind the sub classes
-      children.forEach(sub1 -> bindSubClass(sub1, subClass, mappings, m));
-    }
+    sub.getChildEntities(dataSourceName).forEach(sub1 -> bindSubClass(sub1, 
subClass, mappings, m));
   }
 
   private void bindMultiTenantFilter(GrailsHibernatePersistentEntity sub, 
Subclass subClass) {
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubclassMappingBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubclassMappingBinder.java
index ade61515b2..08dc1fa15d 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubclassMappingBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubclassMappingBinder.java
@@ -59,11 +59,11 @@ public class SubclassMappingBinder {
       Mapping m) {
     Subclass subClass;
     subEntity.configureDerivedProperties();
-    if (!m.getTablePerHierarchy() && !m.isTablePerConcreteClass()) {
+    if (m.isJoinedSubclass()) {
       var joined = new JoinedSubclass(parent, this.metadataBuildingContext);
       joinedSubClassBinder.bindJoinedSubClass(subEntity, joined, mappings);
       subClass = joined;
-    } else if (m.isTablePerConcreteClass()) {
+    } else if (m.isUnionSubclass()) {
       var union = new UnionSubclass(parent, this.metadataBuildingContext);
       unionSubclassBinder.bindUnionSubclass(subEntity, union, mappings);
       subClass = union;
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/GrailsHibernatePersistentEntity.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/GrailsHibernatePersistentEntity.java
index 17409f1c39..3911799126 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/GrailsHibernatePersistentEntity.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/GrailsHibernatePersistentEntity.java
@@ -55,21 +55,25 @@ public interface GrailsHibernatePersistentEntity extends 
PersistentEntity {
 
   default boolean isTablePerHierarchy() {
     Mapping mapping = getMappedForm();
-    return mapping == null || mapping.getTablePerHierarchy();
+    return mapping == null || mapping.isTablePerHierarchy();
   }
 
-  default boolean isTablePerConcreteClass() {
+  default boolean isJoinedSubclass() {
     Mapping mapping = getMappedForm();
-    return mapping != null && mapping.isTablePerConcreteClass();
+    return mapping != null && mapping.isJoinedSubclass();
+  }
+
+  default boolean isUnionSubclass() {
+    Mapping mapping = getMappedForm();
+    return mapping != null && mapping.isUnionSubclass();
   }
 
   default boolean isTableAbstract() {
-    return !isTablePerHierarchy() && isTablePerConcreteClass() && isAbstract();
+    return isUnionSubclass() && isAbstract();
   }
 
   default boolean isTablePerHierarchySubclass() {
-    Mapping rootMapping = getRootMapping();
-    return !this.isRoot() && (rootMapping == null || 
rootMapping.getTablePerHierarchy());
+    return !this.isRoot() && getHibernateRootEntity().isTablePerHierarchy();
   }
 
   default Set<String> buildDiscriminatorSet() {

Reply via email to