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 af710591949ff578f9636a31985b713f5c74ae74
Author: Walter Duque de Estrada <[email protected]>
AuthorDate: Thu Feb 19 04:48:31 2026 -0600

    Move getCompositeIdentity to GrailsHibernatePersistentEntity and rename to 
getHibernateCompositeIdentity
---
 .../cfg/GrailsHibernatePersistentEntity.java       |  8 ++
 .../cfg/GrailsHibernatePersistentProperty.java     |  8 --
 .../secondpass/DependentKeyValueBinder.java        |  8 +-
 .../cfg/GrailsHibernatePersistentEntitySpec.groovy | 67 +++++++++++++++++
 .../hibernate/HibernateToManyPropertySpec.groovy   | 86 ----------------------
 .../secondpass/DependentKeyValueBinderSpec.groovy  |  2 -
 6 files changed, 80 insertions(+), 99 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 486e946aba..879171bf9d 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
@@ -79,6 +79,14 @@ package org.grails.orm.hibernate.cfg;
     @Override
     GrailsHibernatePersistentProperty[] getCompositeIdentity();
 
+    default Optional<CompositeIdentity> getHibernateCompositeIdentity() {
+        return Optional.ofNullable(getMappedForm())
+                .filter(Mapping::hasCompositeIdentifier)
+                .map(Mapping::getIdentity)
+                .filter(CompositeIdentity.class::isInstance)
+                .map(CompositeIdentity.class::cast);
+    }
+
     default String getDiscriminatorValue() {
         return Optional.ofNullable(getMappedForm())
                 .map(Mapping::getDiscriminator)
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsHibernatePersistentProperty.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsHibernatePersistentProperty.java
index 7d2dd5958a..01bac46723 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsHibernatePersistentProperty.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsHibernatePersistentProperty.java
@@ -23,14 +23,6 @@ import org.grails.orm.hibernate.cfg.Mapping;
  */
 public interface GrailsHibernatePersistentProperty extends 
PersistentProperty<PropertyConfig> {
 
-    default Optional<CompositeIdentity> getCompositeIdentity(Mapping mapping) {
-        return Optional.ofNullable(mapping)
-                .filter(m -> m.hasCompositeIdentifier() && 
supportsJoinColumnMapping())
-                .map(Mapping::getIdentity)
-                .filter(CompositeIdentity.class::isInstance)
-                .map(CompositeIdentity.class::cast);
-    }
-
     default boolean isOwningSide() {
         return this instanceof Association<?> association && 
association.isOwningSide();
     }
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/DependentKeyValueBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/DependentKeyValueBinder.java
index f2cde159de..d7a79c6a74 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/DependentKeyValueBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/DependentKeyValueBinder.java
@@ -2,12 +2,13 @@ package org.grails.orm.hibernate.cfg.domainbinding.secondpass;
 
 import org.grails.orm.hibernate.cfg.CompositeIdentity;
 import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentEntity;
-import org.grails.orm.hibernate.cfg.Mapping;
 import 
org.grails.orm.hibernate.cfg.domainbinding.binder.CompositeIdentifierToManyToOneBinder;
 import org.grails.orm.hibernate.cfg.domainbinding.binder.SimpleValueBinder;
 import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateToManyProperty;
 import org.hibernate.mapping.DependantValue;
 
+import java.util.Optional;
+
 import static org.grails.orm.hibernate.cfg.GrailsDomainBinder.EMPTY_PATH;
 
 /**
@@ -25,9 +26,10 @@ public class DependentKeyValueBinder {
 
     public void bind(HibernateToManyProperty property, DependantValue key) {
         GrailsHibernatePersistentEntity refDomainClass = 
property.getHibernateOwner();
-        Mapping mapping = refDomainClass.getMappedForm();
 
-        property.getCompositeIdentity(mapping).ifPresentOrElse(ci -> {
+        Optional<CompositeIdentity> compositeIdentity = 
property.supportsJoinColumnMapping() ? 
refDomainClass.getHibernateCompositeIdentity() : Optional.empty();
+
+        compositeIdentity.ifPresentOrElse(ci -> {
             
compositeIdentifierToManyToOneBinder.bindCompositeIdentifierToManyToOne(property,
 key, ci, refDomainClass, EMPTY_PATH);
         }, () -> {
             simpleValueBinder.bindSimpleValue(property, null, key, EMPTY_PATH);
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/GrailsHibernatePersistentEntitySpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/GrailsHibernatePersistentEntitySpec.groovy
index 1abecd09b0..fe5d40e1e4 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/GrailsHibernatePersistentEntitySpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/GrailsHibernatePersistentEntitySpec.groovy
@@ -233,6 +233,73 @@ class GrailsHibernatePersistentEntitySpec extends 
HibernateGormDatastoreSpec {
         then:
         result2 == ["'VEHICLE'", "'TRUCK'"] as Set
     }
+
+    def "test getHibernateCompositeIdentity returns CompositeIdentity when 
conditions met"() {
+        given:
+        def context = getMappingContext()
+        GrailsHibernatePersistentEntity entity = 
Spy(HibernatePersistentEntity, constructorArgs: [Person, context])
+        def mapping = Mock(Mapping)
+        def compositeIdentity = new CompositeIdentity()
+
+        entity.getMappedForm() >> mapping
+        mapping.hasCompositeIdentifier() >> true
+        mapping.getIdentity() >> compositeIdentity
+
+        when:
+        Optional<CompositeIdentity> result = 
entity.getHibernateCompositeIdentity()
+
+        then:
+        result.isPresent()
+        result.get() == compositeIdentity
+    }
+
+    def "test getHibernateCompositeIdentity returns empty when mapping is 
null"() {
+        given:
+        def context = getMappingContext()
+        GrailsHibernatePersistentEntity entity = 
Spy(HibernatePersistentEntity, constructorArgs: [Person, context])
+
+        entity.getMappedForm() >> null
+
+        when:
+        Optional<CompositeIdentity> result = 
entity.getHibernateCompositeIdentity()
+
+        then:
+        !result.isPresent()
+    }
+
+    def "test getHibernateCompositeIdentity returns empty when mapping has no 
composite identifier"() {
+        given:
+        def context = getMappingContext()
+        GrailsHibernatePersistentEntity entity = 
Spy(HibernatePersistentEntity, constructorArgs: [Person, context])
+        def mapping = Mock(Mapping)
+
+        entity.getMappedForm() >> mapping
+        mapping.hasCompositeIdentifier() >> false
+
+        when:
+        Optional<CompositeIdentity> result = 
entity.getHibernateCompositeIdentity()
+
+        then:
+        !result.isPresent()
+    }
+
+    def "test getHibernateCompositeIdentity returns empty when 
mapping.getIdentity is not CompositeIdentity"() {
+        given:
+        def context = getMappingContext()
+        GrailsHibernatePersistentEntity entity = 
Spy(HibernatePersistentEntity, constructorArgs: [Person, context])
+        def mapping = Mock(Mapping)
+        def nonCompositeIdentity = new Identity()
+
+        entity.getMappedForm() >> mapping
+        mapping.hasCompositeIdentifier() >> true
+        mapping.getIdentity() >> nonCompositeIdentity
+
+        when:
+        Optional<CompositeIdentity> result = 
entity.getHibernateCompositeIdentity()
+
+        then:
+        !result.isPresent()
+    }
 }
 
 @Entity
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernateToManyPropertySpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernateToManyPropertySpec.groovy
index f65f76cc68..656be6c97f 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernateToManyPropertySpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernateToManyPropertySpec.groovy
@@ -132,92 +132,6 @@ class HibernateToManyPropertySpec extends 
HibernateGormDatastoreSpec {
         then:
         collection.getWhere() == "item_type in ('A','B')"
     }
-
-    def "test getCompositeIdentity returns CompositeIdentity when conditions 
met"() {
-        given:
-        def mapping = Mock(Mapping)
-        // Use the helper to create a concrete instance
-        def property = createTestHibernateToManyProperty(TestEntityWithMany) 
// Use TestEntityWithMany for a basic association
-        def spiedProperty = Spy(property)
-        spiedProperty.supportsJoinColumnMapping() >> true // Explicitly set 
for this test scenario
-        
-        // Use a real CompositeIdentity instead of a mock
-        def compositeIdentity = new CompositeIdentity()
-        mapping.hasCompositeIdentifier() >> true
-        mapping.getIdentity() >> compositeIdentity
-
-        when:
-        Optional<CompositeIdentity> result = 
spiedProperty.getCompositeIdentity(mapping)
-
-        then:
-        result.isPresent()
-        result.get() == compositeIdentity
-    }
-
-    def "test getCompositeIdentity returns empty when mapping is null"() {
-        given:
-        def property = createTestHibernateToManyProperty(TestEntityWithMany) 
// Use a real entity
-        def spiedProperty = Spy(property)
-        spiedProperty.supportsJoinColumnMapping() >> true // Explicitly set 
for this test scenario
-        
-        when:
-        Optional<CompositeIdentity> result = 
spiedProperty.getCompositeIdentity(null)
-
-        then:
-        !result.isPresent()
-    }
-
-    def "test getCompositeIdentity returns empty when mapping has no composite 
identifier"() {
-        given:
-        def mapping = Mock(Mapping)
-        def property = createTestHibernateToManyProperty(TestEntityWithMany) 
// Use a real entity
-        def spiedProperty = Spy(property)
-        spiedProperty.supportsJoinColumnMapping() >> true // Explicitly set 
for this test scenario
-        
-        mapping.hasCompositeIdentifier() >> false
-
-        when:
-        Optional<CompositeIdentity> result = 
spiedProperty.getCompositeIdentity(mapping)
-
-        then:
-        !result.isPresent()
-    }
-
-    def "test getCompositeIdentity returns empty when property does not 
support join column mapping"() {
-        given:
-        def mapping = Mock(Mapping)
-        def property = createTestHibernateToManyProperty(TestEntityWithMany) 
// Use a real entity
-        def spiedProperty = Spy(property)
-        spiedProperty.supportsJoinColumnMapping() >> false // Explicitly set 
to false for this test scenario
-        
-        mapping.hasCompositeIdentifier() >> true
-
-        when:
-        Optional<CompositeIdentity> result = 
spiedProperty.getCompositeIdentity(mapping)
-
-        then:
-        !result.isPresent()
-    }
-
-    def "test getCompositeIdentity returns empty when mapping.getIdentity is 
not CompositeIdentity"() {
-        given:
-        def mapping = Mock(Mapping)
-        def property = createTestHibernateToManyProperty(TestEntityWithMany) 
// Use a real entity
-        def spiedProperty = Spy(property)
-        spiedProperty.supportsJoinColumnMapping() >> true // Explicitly set to 
true for this test scenario
-        
-        // Use a real Identity instead of a mock or a plain Object
-        def nonCompositeIdentity = new Identity()
-        
-        mapping.hasCompositeIdentifier() >> true
-        mapping.getIdentity() >> nonCompositeIdentity
-
-        when:
-        Optional<CompositeIdentity> result = 
spiedProperty.getCompositeIdentity(mapping)
-
-        then:
-        !result.isPresent()
-    }
 }
 
 @Entity
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/DependentKeyValueBinderSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/DependentKeyValueBinderSpec.groovy
index e580574c2c..c11b0231bd 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/DependentKeyValueBinderSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/DependentKeyValueBinderSpec.groovy
@@ -5,7 +5,6 @@ import grails.gorm.specs.HibernateGormDatastoreSpec
 import org.grails.orm.hibernate.cfg.CompositeIdentity
 import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentEntity
 import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateToManyProperty
-import org.grails.orm.hibernate.cfg.Mapping
 import 
org.grails.orm.hibernate.cfg.domainbinding.binder.CompositeIdentifierToManyToOneBinder
 import org.grails.orm.hibernate.cfg.domainbinding.binder.SimpleValueBinder
 import org.hibernate.mapping.DependantValue
@@ -31,7 +30,6 @@ class DependentKeyValueBinderSpec extends 
HibernateGormDatastoreSpec {
         given:
         HibernateToManyProperty property = 
createTestProperty(TestEntityWithMany)
         GrailsHibernatePersistentEntity owner = 
(GrailsHibernatePersistentEntity) property.getOwner()
-        Mapping mapping = owner.getMappedForm()
         DependantValue key = Mock(DependantValue)
 
         when:

Reply via email to