You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@grails.apache.org by bo...@apache.org on 2026/02/13 04:11:25 UTC
(grails-core) 13/21: Fix getRootMapping on GrailsHibernatePersistentEntity
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 <wb...@mac.com>
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();