This is an automated email from the ASF dual-hosted git repository.

borinquenkid pushed a commit to branch 8.0.x-hibernate7-dev
in repository https://gitbox.apache.org/repos/asf/grails-core.git

commit c36bfc7ef45bb4b0f2219b30508221cb4ccfb5b3
Author: Walter Duque de Estrada <[email protected]>
AuthorDate: Thu Mar 12 16:19:05 2026 -0500

    hibernate 7:  reducing arguments to HibernatePersistentEntity
---
 .../orm/hibernate/cfg/HibernateMappingContext.java      | 17 ++++++-----------
 .../cfg/domainbinding/binder/GrailsDomainBinder.java    |  6 ++++--
 .../hibernate/cfg/domainbinding/binder/RootBinder.java  |  5 +++--
 .../hibernate/GrailsHibernatePersistentEntity.java      | 12 +++++++-----
 .../cfg/domainbinding/util/MultiTenantFilterBinder.java |  3 ++-
 .../cfg/domainbinding/binder/RootBinderSpec.groovy      | 10 +++++-----
 .../cfg/domainbinding/binder/SubClassBinderSpec.groovy  | 11 ++++++-----
 .../util/MultiTenantFilterBinderSpec.groovy             | 10 +++++-----
 8 files changed, 38 insertions(+), 36 deletions(-)

diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateMappingContext.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateMappingContext.java
index c07f763c1f..a92e760f28 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateMappingContext.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateMappingContext.java
@@ -116,16 +116,11 @@ public class HibernateMappingContext extends 
AbstractMappingContext {
         return super.getPersistentEntity(name);
     }
 
-    public Collection<GrailsHibernatePersistentEntity> 
getHibernatePersistentEntities(String dataSourceName) {
-        List<GrailsHibernatePersistentEntity> result = new ArrayList<>();
-        if (persistentEntities != null) {
-            for (PersistentEntity entity : persistentEntities) {
-                if (entity instanceof GrailsHibernatePersistentEntity 
hibernateEntity) {
-                    hibernateEntity.setDataSourceName(dataSourceName);
-                    result.add(hibernateEntity);
-                }
-            }
-        }
-        return result;
+    public List<HibernatePersistentEntity> 
getHibernatePersistentEntities(String dataSourceName) {
+        return persistentEntities.stream()
+                .filter(HibernatePersistentEntity.class::isInstance)
+                .map(HibernatePersistentEntity.class::cast)
+                .peek(hibernateEntity -> 
hibernateEntity.setDataSourceName(dataSourceName))
+                .toList();
     }
 }
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/GrailsDomainBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/GrailsDomainBinder.java
index 94d7ea3f25..fd075a71bc 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/GrailsDomainBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/GrailsDomainBinder.java
@@ -37,6 +37,7 @@ import org.grails.orm.hibernate.cfg.MappingCacheHolder;
 import org.grails.orm.hibernate.cfg.PersistentEntityNamingStrategy;
 import 
org.grails.orm.hibernate.cfg.domainbinding.collectionType.CollectionHolder;
 import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.GrailsHibernatePersistentEntity;
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentEntity;
 import org.grails.orm.hibernate.cfg.domainbinding.util.BackticksRemover;
 import org.grails.orm.hibernate.cfg.domainbinding.util.BasicValueIdCreator;
 import 
org.grails.orm.hibernate.cfg.domainbinding.util.ColumnNameForPropertyAndPathFetcher;
@@ -89,7 +90,7 @@ public class GrailsDomainBinder implements 
AdditionalMappingContributor, TypeCon
         this.mappingCacheHolder = MappingCacheHolder.getInstance();
 
         // pre-build mappings
-        for (GrailsHibernatePersistentEntity persistentEntity :
+        for (HibernatePersistentEntity persistentEntity :
                 
hibernateMappingContext.getHibernatePersistentEntities(dataSourceName)) {
             mappingCacheHolder.cacheMapping(persistentEntity);
         }
@@ -220,7 +221,8 @@ public class GrailsDomainBinder implements 
AdditionalMappingContributor, TypeCon
                 discriminatorPropertyBinder,
                 metadataCollector);
 
-        
hibernateMappingContext.getHibernatePersistentEntities(dataSourceName).stream()
+        hibernateMappingContext.getHibernatePersistentEntities(dataSourceName)
+                .stream()
                 .filter(persistentEntity -> 
persistentEntity.forGrailsDomainMapping(dataSourceName))
                 .forEach(rootBinder::bindRoot);
     }
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootBinder.java
index 1e73138432..4ebc00b374 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootBinder.java
@@ -28,6 +28,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.GrailsHibernatePersistentEntity;
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentEntity;
 import org.grails.orm.hibernate.cfg.domainbinding.util.MultiTenantFilterBinder;
 
 /** Binder for root classes. */
@@ -64,13 +65,13 @@ public class RootBinder {
      *
      * @param entity The Grails domain class
      */
-    public void bindRoot(@Nonnull GrailsHibernatePersistentEntity entity) {
+    public void bindRoot(@Nonnull HibernatePersistentEntity entity) {
         if (mappings.getEntityBinding(entity.getName()) != null) {
             LOG.warn("[RootBinder] Class [" + entity.getName() + "] is already 
mapped, skipping.. ");
             return;
         }
 
-        Collection<GrailsHibernatePersistentEntity> children = 
entity.getChildEntities(dataSourceName);
+        var children = entity.getChildEntities(dataSourceName);
         RootClass root = 
rootPersistentClassCommonValuesBinder.bindRoot(entity);
 
         if (!children.isEmpty() && entity.isTablePerHierarchy()) {
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 b93bab2c98..537d4b30e5 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
@@ -228,14 +228,16 @@ public interface GrailsHibernatePersistentEntity extends 
PersistentEntity {
                 .toList();
     }
 
-    default List<GrailsHibernatePersistentEntity> getChildEntities() {
+    default List<HibernatePersistentEntity> getChildEntities() {
         return getChildEntities(getDataSourceName());
     }
 
-    default List<GrailsHibernatePersistentEntity> getChildEntities(String 
dataSourceName) {
-        return getMappingContext().getDirectChildEntities(this).stream()
-                .filter(GrailsHibernatePersistentEntity.class::isInstance)
-                .map(GrailsHibernatePersistentEntity.class::cast)
+    default List<HibernatePersistentEntity> getChildEntities(String 
dataSourceName) {
+        return getMappingContext()
+                .getDirectChildEntities(this)
+                .stream()
+                .filter(HibernatePersistentEntity.class::isInstance)
+                .map(HibernatePersistentEntity.class::cast)
                 .filter(persistentEntity -> 
persistentEntity.usesConnectionSource(dataSourceName))
                 .filter(sub -> 
sub.getJavaClass().getSuperclass().equals(this.getJavaClass()))
                 .toList();
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/MultiTenantFilterBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/MultiTenantFilterBinder.java
index 53715357d0..526c2750d7 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/MultiTenantFilterBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/MultiTenantFilterBinder.java
@@ -36,6 +36,7 @@ import org.hibernate.mapping.UnionSubclass;
 
 import org.grails.datastore.mapping.model.config.GormProperties;
 import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.GrailsHibernatePersistentEntity;
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentEntity;
 import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentProperty;
 
 /**
@@ -69,7 +70,7 @@ public class MultiTenantFilterBinder {
      * @return The filter definition applied, or null if none
      */
     @Nullable
-    public FilterDefinition bind(@Nonnull GrailsHibernatePersistentEntity 
entity, @Nonnull RootClass rootClass) {
+    public FilterDefinition bind(@Nonnull HibernatePersistentEntity entity, 
@Nonnull RootClass rootClass) {
         return doBind(entity, rootClass);
     }
 
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootBinderSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootBinderSpec.groovy
index 0a42629250..d5753dead0 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootBinderSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootBinderSpec.groovy
@@ -4,7 +4,7 @@ package org.grails.orm.hibernate.cfg.domainbinding.binder
 import grails.gorm.specs.HibernateGormDatastoreSpec
 import org.grails.orm.hibernate.cfg.Mapping
 import org.grails.orm.hibernate.cfg.PersistentEntityNamingStrategy
-import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.GrailsHibernatePersistentEntity
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentEntity
 import org.grails.orm.hibernate.cfg.domainbinding.util.MultiTenantFilterBinder
 import org.hibernate.boot.spi.MetadataBuildingContext
 import org.hibernate.mapping.RootClass
@@ -43,7 +43,7 @@ class RootBinderSpec extends HibernateGormDatastoreSpec {
 
     def "test bindRoot with no children"() {
         given:
-        def entity = Mock(GrailsHibernatePersistentEntity)
+        def entity = Mock(HibernatePersistentEntity)
         entity.getName() >> "Parent"
         entity.getChildEntities("default") >> []
         entity.getMappedForm() >> new Mapping()
@@ -66,8 +66,8 @@ class RootBinderSpec extends HibernateGormDatastoreSpec {
 
     def "test bindRoot with children and table-per-hierarchy"() {
         given:
-        def entity = Mock(GrailsHibernatePersistentEntity)
-        def childEntity = Mock(GrailsHibernatePersistentEntity)
+        def entity = Mock(HibernatePersistentEntity)
+        def childEntity = Mock(HibernatePersistentEntity)
         entity.getName() >> "Parent"
         entity.getChildEntities("default") >> [childEntity]
         def mapping = new Mapping()
@@ -93,7 +93,7 @@ class RootBinderSpec extends HibernateGormDatastoreSpec {
 
     def "test bindRoot already mapped"() {
         given:
-        def entity = Mock(GrailsHibernatePersistentEntity)
+        def entity = Mock(HibernatePersistentEntity)
         entity.getName() >> "Parent"
         def mappings = sharedCollector
         def rootClass = new RootClass(metadataBuildingContext)
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubClassBinderSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubClassBinderSpec.groovy
index fe89406f1d..b425102b7d 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubClassBinderSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SubClassBinderSpec.groovy
@@ -1,10 +1,11 @@
 package org.grails.orm.hibernate.cfg.domainbinding.binder
 
+import org.hibernate.mapping.SingleTableSubclass
 
 import grails.gorm.specs.HibernateGormDatastoreSpec
 import org.grails.orm.hibernate.cfg.Mapping
 import org.grails.orm.hibernate.cfg.MappingCacheHolder
-import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.GrailsHibernatePersistentEntity
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentEntity
 import org.grails.orm.hibernate.cfg.domainbinding.util.MultiTenantFilterBinder
 import org.hibernate.boot.spi.MetadataBuildingContext
 import org.hibernate.mapping.RootClass
@@ -35,13 +36,13 @@ class SubClassBinderSpec extends HibernateGormDatastoreSpec 
{
 
     def "test bindSubClass with no children"() {
         given:
-        def subEntity = Mock(GrailsHibernatePersistentEntity)
+        def subEntity = Mock(HibernatePersistentEntity)
         subEntity.getName() >> "Child"
         subEntity.getChildEntities("default") >> []
         def rootClass = new RootClass(metadataBuildingContext)
         rootClass.setEntityName("Parent")
         rootClass.setJpaEntityName("Parent")
-        def subClass = new 
org.hibernate.mapping.SingleTableSubclass(rootClass, metadataBuildingContext)
+        def subClass = new SingleTableSubclass(rootClass, 
metadataBuildingContext)
         subClass.setEntityName("Child")
         subClass.setJpaEntityName("Child")
 
@@ -57,8 +58,8 @@ class SubClassBinderSpec extends HibernateGormDatastoreSpec {
 
     def "test bindSubClass with children"() {
         given:
-        def subEntity = Mock(GrailsHibernatePersistentEntity)
-        def grandChildEntity = Mock(GrailsHibernatePersistentEntity)
+        def subEntity = Mock(HibernatePersistentEntity)
+        def grandChildEntity = Mock(HibernatePersistentEntity)
         subEntity.getName() >> "Child"
         grandChildEntity.getName() >> "GrandChild"
         subEntity.getChildEntities("default") >> [grandChildEntity]
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/MultiTenantFilterBinderSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/MultiTenantFilterBinderSpec.groovy
index 9a1543fc8f..3615afda8e 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/MultiTenantFilterBinderSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/MultiTenantFilterBinderSpec.groovy
@@ -2,7 +2,7 @@ package org.grails.orm.hibernate.cfg.domainbinding.util
 
 import grails.gorm.specs.HibernateGormDatastoreSpec
 import org.grails.datastore.mapping.model.config.GormProperties
-import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.GrailsHibernatePersistentEntity
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentEntity
 import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentProperty
 import org.hibernate.boot.spi.InFlightMetadataCollector
 import org.hibernate.mapping.BasicValue
@@ -32,7 +32,7 @@ class MultiTenantFilterBinderSpec extends 
HibernateGormDatastoreSpec {
 
     void "test add multi tenant filter to root class"() {
         given:
-        def entity = Mock(GrailsHibernatePersistentEntity)
+        def entity = Mock(HibernatePersistentEntity)
         def buildingContext = 
getGrailsDomainBinder().getMetadataBuildingContext()
         def persistentClass = new RootClass(buildingContext)
         
@@ -69,7 +69,7 @@ class MultiTenantFilterBinderSpec extends 
HibernateGormDatastoreSpec {
 
     void "test skip filter for single table subclass (redundant)"() {
         given:
-        def entity = Mock(GrailsHibernatePersistentEntity)
+        def entity = Mock(HibernatePersistentEntity)
         def buildingContext = 
getGrailsDomainBinder().getMetadataBuildingContext()
         def rootClass = new RootClass(buildingContext)
         def table = new Table("ROOT_TABLE")
@@ -103,7 +103,7 @@ class MultiTenantFilterBinderSpec extends 
HibernateGormDatastoreSpec {
 
     void "test skip filter for joined subclass if inherited (alias safety)"() {
         given:
-        def entity = Mock(GrailsHibernatePersistentEntity)
+        def entity = Mock(HibernatePersistentEntity)
         def buildingContext = 
getGrailsDomainBinder().getMetadataBuildingContext()
         def rootClass = new RootClass(buildingContext)
         def rootTable = new Table("ROOT_TABLE")
@@ -141,7 +141,7 @@ class MultiTenantFilterBinderSpec extends 
HibernateGormDatastoreSpec {
 
     void "test add filter for union subclass (own table)"() {
         given:
-        def entity = Mock(GrailsHibernatePersistentEntity)
+        def entity = Mock(HibernatePersistentEntity)
         def buildingContext = 
getGrailsDomainBinder().getMetadataBuildingContext()
         def rootClass = new RootClass(buildingContext)
         def subTable = new Table("SUB_TABLE")

Reply via email to