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 b1e91e4eaf5cc67eaaf62f4643095696e88b4577
Author: Walter Duque de Estrada <[email protected]>
AuthorDate: Fri Mar 13 15:45:57 2026 -0500

    hibernate 7:  using more HibernatePersistentEntity
---
 .../org/grails/orm/hibernate/cfg/CompositeIdentity.groovy |  4 ++++
 .../cfg/domainbinding/binder/CompositeIdBinder.java       | 12 +++++-------
 .../cfg/domainbinding/binder/IdentityBinder.java          |  3 ++-
 .../cfg/domainbinding/binder/SimpleIdBinder.java          |  3 ++-
 .../cfg/domainbinding/CompositeIdBinderSpec.groovy        |  7 ++++---
 .../hibernate/cfg/domainbinding/IdentityBinderSpec.groovy | 15 ++++++++-------
 .../hibernate/cfg/domainbinding/SimpleIdBinderSpec.groovy | 11 ++++++-----
 7 files changed, 31 insertions(+), 24 deletions(-)

diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/CompositeIdentity.groovy
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/CompositeIdentity.groovy
index 6dc34ca7ac..abc2ef384e 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/CompositeIdentity.groovy
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/CompositeIdentity.groovy
@@ -79,6 +79,10 @@ class CompositeIdentity extends Property implements 
HibernateIdentity {
             throw new MappingException("Property referenced in composite-id 
mapping of class [${domainClass.name}] is not a valid property!")
         }
 
+        if (composite.length == 0) {
+            throw new MappingException("No composite identifier properties 
found for class [" + domainClass.getName() + "]");
+        }
+
         composite
     }
 }
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/CompositeIdBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/CompositeIdBinder.java
index 90caf771c4..c9e0ee8cd7 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/CompositeIdBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/CompositeIdBinder.java
@@ -28,6 +28,7 @@ import org.hibernate.mapping.RootClass;
 import org.grails.orm.hibernate.cfg.CompositeIdentity;
 import org.grails.orm.hibernate.cfg.GrailsHibernateUtil;
 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;
 
 @SuppressWarnings("PMD.DataflowAnomalyAnalysis")
@@ -47,7 +48,7 @@ public class CompositeIdBinder {
     }
 
     public void bindCompositeId(
-            @Nonnull GrailsHibernatePersistentEntity domainClass, RootClass 
root,@Nonnull CompositeIdentity compositeIdentity) {
+            @Nonnull HibernatePersistentEntity domainClass, RootClass root, 
CompositeIdentity compositeIdentity) {
         Component id = new Component(metadataBuildingContext, root);
         id.setNullValue("undefined");
         root.setIdentifier(id);
@@ -61,12 +62,9 @@ public class CompositeIdBinder {
 
         id.setRoleName(path);
 
-        HibernatePersistentProperty[] composite;
-        if (compositeIdentity != null) {
-            composite = compositeIdentity.getHibernateProperties(domainClass);
-        } else {
-            composite = domainClass.getCompositeIdentity();
-        }
+        HibernatePersistentProperty[] composite = compositeIdentity != null
+                ? compositeIdentity.getHibernateProperties(domainClass)
+                : domainClass.getCompositeIdentity();
 
         if (composite == null || composite.length == 0) {
             throw new MappingException("No composite identifier properties 
found for class [" + domainClass.getName() + "]");
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/IdentityBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/IdentityBinder.java
index 4d82139eda..df3c070936 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/IdentityBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/IdentityBinder.java
@@ -27,6 +27,7 @@ import org.grails.orm.hibernate.cfg.Identity;
 import org.grails.orm.hibernate.cfg.Mapping;
 import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.GrailsHibernatePersistentEntity;
 import org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateIdentity;
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentEntity;
 
 public class IdentityBinder {
 
@@ -38,7 +39,7 @@ public class IdentityBinder {
         this.compositeIdBinder = compositeIdBinder;
     }
 
-    public void bindIdentity(@Nonnull GrailsHibernatePersistentEntity 
domainClass, RootClass root) {
+    public void bindIdentity(@Nonnull HibernatePersistentEntity domainClass, 
RootClass root) {
         var id = domainClass.getHibernateIdentity();
         if (id instanceof CompositeIdentity) {
             compositeIdBinder.bindCompositeId(domainClass, root, 
(CompositeIdentity) id);
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SimpleIdBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SimpleIdBinder.java
index fbe30683c9..3a3397672f 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SimpleIdBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/SimpleIdBinder.java
@@ -35,6 +35,7 @@ import org.grails.orm.hibernate.cfg.Mapping;
 import org.grails.orm.hibernate.cfg.PropertyConfig;
 import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.GrailsHibernatePersistentEntity;
 import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateIdentityProperty;
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentEntity;
 import org.grails.orm.hibernate.cfg.domainbinding.util.BasicValueIdCreator;
 
 import static 
org.grails.orm.hibernate.cfg.domainbinding.binder.GrailsDomainBinder.EMPTY_PATH;
@@ -63,7 +64,7 @@ public class SimpleIdBinder {
     }
 
     public void bindSimpleId(
-            @Nonnull GrailsHibernatePersistentEntity domainClass, RootClass 
entity, Identity mappedId, Table table) {
+            @Nonnull HibernatePersistentEntity domainClass, RootClass entity, 
Identity mappedId, Table table) {
 
         Mapping result = domainClass.getMappedForm();
         boolean useSequence = result != null && 
result.isTablePerConcreteClass();
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/CompositeIdBinderSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/CompositeIdBinderSpec.groovy
index 7eaf7f56ba..a12a5ee5e2 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/CompositeIdBinderSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/CompositeIdBinderSpec.groovy
@@ -5,6 +5,7 @@ import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentP
 import org.grails.orm.hibernate.cfg.CompositeIdentity
 import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.GrailsHibernatePersistentEntity
 
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentEntity
 import org.hibernate.mapping.Component
 import org.hibernate.mapping.RootClass
 import org.hibernate.mapping.Table
@@ -31,7 +32,7 @@ class CompositeIdBinderSpec extends 
HibernateGormDatastoreSpec {
 
     def "should bind composite id using property names from 
CompositeIdentity"() {
         given:
-        def domainClass = Mock(GrailsHibernatePersistentEntity)
+        def domainClass = Mock(HibernatePersistentEntity)
         def metadataBuildingContext = 
getGrailsDomainBinder().getMetadataBuildingContext()
         def root = new RootClass(metadataBuildingContext)
         root.setEntityName("MyEntity")
@@ -63,7 +64,7 @@ class CompositeIdBinderSpec extends 
HibernateGormDatastoreSpec {
 
     def "should fallback to domainClass composite identity when 
CompositeIdentity is null"() {
         given:
-        def domainClass = Mock(GrailsHibernatePersistentEntity)
+        def domainClass = Mock(HibernatePersistentEntity)
         def metadataBuildingContext = 
getGrailsDomainBinder().getMetadataBuildingContext()
         def root = new RootClass(metadataBuildingContext)
         root.setEntityName("MyEntity")
@@ -88,7 +89,7 @@ class CompositeIdBinderSpec extends 
HibernateGormDatastoreSpec {
 
     def "should throw MappingException if no composite properties found"() {
         given:
-        def domainClass = Mock(GrailsHibernatePersistentEntity)
+        def domainClass = Mock(HibernatePersistentEntity)
         def metadataBuildingContext = 
getGrailsDomainBinder().getMetadataBuildingContext()
         def root = new RootClass(metadataBuildingContext)
         root.setEntityName("MyEntity")
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/IdentityBinderSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/IdentityBinderSpec.groovy
index de2bef34de..fd1916174b 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/IdentityBinderSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/IdentityBinderSpec.groovy
@@ -23,6 +23,7 @@ import org.grails.datastore.mapping.model.ClassMapping
 import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentProperty
 import org.grails.orm.hibernate.cfg.CompositeIdentity
 import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.GrailsHibernatePersistentEntity
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentEntity
 import org.grails.orm.hibernate.cfg.Identity
 import org.grails.orm.hibernate.cfg.Mapping
 import org.hibernate.boot.spi.InFlightMetadataCollector
@@ -48,7 +49,7 @@ class IdentityBinderSpec extends HibernateGormDatastoreSpec {
 
     def "should delegate to simpleIdBinder when mapping is null and 
domainClass has simple identity"() {
         given:
-        def domainClass = Mock(GrailsHibernatePersistentEntity)
+        def domainClass = Mock(HibernatePersistentEntity)
         def root = new 
RootClass(getGrailsDomainBinder().getMetadataBuildingContext())
         def mappings = Mock(InFlightMetadataCollector)
         def identifierProp = Mock(HibernatePersistentProperty)
@@ -67,7 +68,7 @@ class IdentityBinderSpec extends HibernateGormDatastoreSpec {
 
     def "should delegate to compositeIdBinder when mapping is null and 
domainClass has composite identity"() {
         given:
-        def domainClass = Mock(GrailsHibernatePersistentEntity)
+        def domainClass = Mock(HibernatePersistentEntity)
         def root = new 
RootClass(getGrailsDomainBinder().getMetadataBuildingContext())
         def mappings = Mock(InFlightMetadataCollector)
         def compositeProps = [Mock(HibernatePersistentProperty), 
Mock(HibernatePersistentProperty)] as HibernatePersistentProperty[]
@@ -85,7 +86,7 @@ class IdentityBinderSpec extends HibernateGormDatastoreSpec {
 
     def "should delegate to compositeIdBinder when mapping specifies composite 
identity"() {
         given:
-        def domainClass = Mock(GrailsHibernatePersistentEntity)
+        def domainClass = Mock(HibernatePersistentEntity)
         def root = new 
RootClass(getGrailsDomainBinder().getMetadataBuildingContext())
         def mappings = Mock(InFlightMetadataCollector)
         def gormMapping = Mock(Mapping)
@@ -102,7 +103,7 @@ class IdentityBinderSpec extends HibernateGormDatastoreSpec 
{
 
     def "should delegate to simpleIdBinder when mapping specifies simple 
identity"() {
         given:
-        def domainClass = Mock(GrailsHibernatePersistentEntity)
+        def domainClass = Mock(HibernatePersistentEntity)
         def root = new 
RootClass(getGrailsDomainBinder().getMetadataBuildingContext())
         def mappings = Mock(InFlightMetadataCollector)
         def gormMapping = Mock(Mapping)
@@ -123,7 +124,7 @@ class IdentityBinderSpec extends HibernateGormDatastoreSpec 
{
 
     def "should not lookup property by name if identity name matches domain 
class name"() {
         given:
-        def domainClass = Mock(GrailsHibernatePersistentEntity)
+        def domainClass = Mock(HibernatePersistentEntity)
         def root = new 
RootClass(getGrailsDomainBinder().getMetadataBuildingContext())
         def mappings = Mock(InFlightMetadataCollector)
         def gormMapping = Mock(Mapping)
@@ -143,7 +144,7 @@ class IdentityBinderSpec extends HibernateGormDatastoreSpec 
{
 
     def "should pass identity with name set to simpleIdBinder"() {
         given:
-        def domainClass = Mock(GrailsHibernatePersistentEntity)
+        def domainClass = Mock(HibernatePersistentEntity)
         def root = new 
RootClass(getGrailsDomainBinder().getMetadataBuildingContext())
         def mappings = Mock(InFlightMetadataCollector)
         def gormMapping = Mock(Mapping)
@@ -163,7 +164,7 @@ class IdentityBinderSpec extends HibernateGormDatastoreSpec 
{
 
     def "should create synthetic identifier property if it doesn't exist"() {
         given:
-        def domainClass = Mock(GrailsHibernatePersistentEntity)
+        def domainClass = Mock(HibernatePersistentEntity)
         def root = new 
RootClass(getGrailsDomainBinder().getMetadataBuildingContext())
         def mappings = Mock(InFlightMetadataCollector)
         def identity = new Identity()
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/SimpleIdBinderSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/SimpleIdBinderSpec.groovy
index 2c7aa30dff..095dbca766 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/SimpleIdBinderSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/SimpleIdBinderSpec.groovy
@@ -3,6 +3,7 @@ package org.grails.orm.hibernate.cfg.domainbinding
 import grails.gorm.specs.HibernateGormDatastoreSpec
 import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentProperty
 import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.GrailsHibernatePersistentEntity
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernatePersistentEntity
 import org.grails.orm.hibernate.cfg.Identity
 import org.hibernate.boot.spi.MetadataBuildingContext
 import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment
@@ -44,7 +45,7 @@ class SimpleIdBinderSpec extends HibernateGormDatastoreSpec {
 
         // Use a Mock for BasicValueIdCreator and return a BasicValue based on 
the currentTable
         basicValueIdCreator = Mock(BasicValueIdCreator)
-        basicValueIdCreator.getBasicValueId(_, _, _, _, _) >> { 
MetadataBuildingContext ctx, Table table, Identity id, 
GrailsHibernatePersistentEntity domainClass, boolean useSeq ->
+        basicValueIdCreator.getBasicValueId(_, _, _, _, _) >> { 
MetadataBuildingContext ctx, Table table, Identity id, 
HibernatePersistentEntity domainClass, boolean useSeq ->
             return new BasicValue(ctx, table)
         }
 
@@ -63,7 +64,7 @@ class SimpleIdBinderSpec extends HibernateGormDatastoreSpec {
         def testProperty = Mock(HibernatePersistentProperty) {
             getName() >> "id"
         }
-        def domainClass = Mock(GrailsHibernatePersistentEntity) {
+        def domainClass = Mock(HibernatePersistentEntity) {
             getMappedForm() >> mapping
             getIdentity() >> testProperty
             getName() >> "TestEntity"
@@ -93,7 +94,7 @@ class SimpleIdBinderSpec extends HibernateGormDatastoreSpec {
         def testProperty = Mock(HibernatePersistentProperty) {
             getName() >> "id"
         }
-        def domainClass = Mock(GrailsHibernatePersistentEntity) {
+        def domainClass = Mock(HibernatePersistentEntity) {
             getMappedForm() >> mapping
             getIdentity() >> testProperty
             getName() >> "TestEntity"
@@ -117,7 +118,7 @@ class SimpleIdBinderSpec extends HibernateGormDatastoreSpec 
{
 
     def "bindSimpleId with non-existent identifier property"() {
         given:
-        def domainClass = Mock(GrailsHibernatePersistentEntity) {
+        def domainClass = Mock(HibernatePersistentEntity) {
             getName() >> "TestEntity"
             getHibernatePropertyByName("nonExistent") >> null
             getIdentity() >> Mock(HibernatePersistentProperty)
@@ -138,7 +139,7 @@ class SimpleIdBinderSpec extends HibernateGormDatastoreSpec 
{
             isTablePerConcreteClass() >> false
         }
         def reflector = Mock(EntityReflector)
-        def domainClass = Mock(GrailsHibernatePersistentEntity) {
+        def domainClass = Mock(HibernatePersistentEntity) {
             getMappedForm() >> mapping
             getIdentity() >> null
             getName() >> "TestEntity"

Reply via email to