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 7eb3b5e57c38c1f229e873892bbf8ba35d2da4bb
Author: Walter Duque de Estrada <[email protected]>
AuthorDate: Mon Mar 9 19:48:18 2026 -0500

    hibernate7:  Modify NaturalIdentifierBinder to accept 
GrailsHibernatePersistentEntity instead of Mapping for better consistency with 
other binders.
---
 .../cfg/domainbinding/binder/ClassPropertiesBinder.java     |  2 +-
 .../cfg/domainbinding/binder/NaturalIdentifierBinder.java   |  8 +++++---
 .../cfg/domainbinding/NaturalIdentifierBinderSpec.groovy    | 13 ++++++++++---
 .../domainbinding/binder/ClassPropertiesBinderSpec.groovy   |  2 +-
 4 files changed, 17 insertions(+), 8 deletions(-)

diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ClassPropertiesBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ClassPropertiesBinder.java
index a25a6eb841..1b6e2874f3 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ClassPropertiesBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ClassPropertiesBinder.java
@@ -78,7 +78,7 @@ public class ClassPropertiesBinder {
           propertyFromValueCreator.createProperty(value, currentGrailsProp));
     }
 
-    naturalIdentifierBinder.bindNaturalIdentifier(domainClass.getMappedForm(), 
persistentClass);
+    naturalIdentifierBinder.bindNaturalIdentifier(domainClass, 
persistentClass);
   }
 
   @Nonnull private Table getTable(PersistentClass persistentClass) {
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/NaturalIdentifierBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/NaturalIdentifierBinder.java
index 87bc1d8f38..0602c02808 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/NaturalIdentifierBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/NaturalIdentifierBinder.java
@@ -19,7 +19,7 @@
 package org.grails.orm.hibernate.cfg.domainbinding.binder;
 
 import java.util.Optional;
-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.util.UniqueNameGenerator;
 import org.hibernate.mapping.PersistentClass;
@@ -36,8 +36,10 @@ public class NaturalIdentifierBinder {
     this(new UniqueNameGenerator());
   }
 
-  public void bindNaturalIdentifier(Mapping mapping, PersistentClass 
persistentClass) {
-    Optional.ofNullable(mapping.getIdentity())
+  public void bindNaturalIdentifier(
+      GrailsHibernatePersistentEntity persistentEntity,
+      PersistentClass persistentClass) {
+    Optional.ofNullable(persistentEntity.getMappedForm().getIdentity())
         .map(HibernateIdentity::getNatural)
         .flatMap(naturalId -> naturalId.createUniqueKey(persistentClass))
         .ifPresent(
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/NaturalIdentifierBinderSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/NaturalIdentifierBinderSpec.groovy
index 103ecb81b6..3c69ed8822 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/NaturalIdentifierBinderSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/NaturalIdentifierBinderSpec.groovy
@@ -5,6 +5,7 @@ import org.grails.orm.hibernate.cfg.CompositeIdentity
 import org.grails.orm.hibernate.cfg.Mapping
 import org.grails.orm.hibernate.cfg.NaturalId
 import 
org.grails.orm.hibernate.cfg.domainbinding.binder.NaturalIdentifierBinder
+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.util.UniqueNameGenerator
 import org.hibernate.mapping.RootClass
@@ -15,6 +16,7 @@ class NaturalIdentifierBinderSpec extends 
HibernateGormDatastoreSpec {
 
     void "test bindNaturalIdentifier calls NaturalId.createUniqueKey and 
handles result"() {
         given:
+        def persistentEntity = Mock(GrailsHibernatePersistentEntity)
         def mapping = Mock(Mapping)
         def identity = Mock(HibernateIdentity)
         def naturalId = Mock(NaturalId)
@@ -25,12 +27,13 @@ class NaturalIdentifierBinderSpec extends 
HibernateGormDatastoreSpec {
         def uniqueNameGenerator = Mock(UniqueNameGenerator)
         def binder = new NaturalIdentifierBinder(uniqueNameGenerator)
 
+        persistentEntity.getMappedForm() >> mapping
         mapping.getIdentity() >> identity
         identity.getNatural() >> naturalId
         naturalId.createUniqueKey(rootClass) >> Optional.of(uk)
 
         when:
-        binder.bindNaturalIdentifier(mapping, rootClass)
+        binder.bindNaturalIdentifier(persistentEntity, rootClass)
 
         then:
         1 * uniqueNameGenerator.setGeneratedUniqueName(uk)
@@ -39,6 +42,7 @@ class NaturalIdentifierBinderSpec extends 
HibernateGormDatastoreSpec {
 
     void "test bindNaturalIdentifier when NaturalId returns empty result"() {
         given:
+        def persistentEntity = Mock(GrailsHibernatePersistentEntity)
         def mapping = Mock(Mapping)
         def identity = Mock(HibernateIdentity)
         def naturalId = Mock(NaturalId)
@@ -46,12 +50,13 @@ class NaturalIdentifierBinderSpec extends 
HibernateGormDatastoreSpec {
         def uniqueNameGenerator = Mock(UniqueNameGenerator)
         def binder = new NaturalIdentifierBinder(uniqueNameGenerator)
 
+        persistentEntity.getMappedForm() >> mapping
         mapping.getIdentity() >> identity
         identity.getNatural() >> naturalId
         naturalId.createUniqueKey(rootClass) >> Optional.empty()
 
         when:
-        binder.bindNaturalIdentifier(mapping, rootClass)
+        binder.bindNaturalIdentifier(persistentEntity, rootClass)
 
         then:
         0 * uniqueNameGenerator._
@@ -59,15 +64,17 @@ class NaturalIdentifierBinderSpec extends 
HibernateGormDatastoreSpec {
 
     void "test bindNaturalIdentifier when no identity is defined"() {
         given:
+        def persistentEntity = Mock(GrailsHibernatePersistentEntity)
         def mapping = Mock(Mapping)
         def rootClass = new 
RootClass(getGrailsDomainBinder().getMetadataBuildingContext())
         def uniqueNameGenerator = Mock(UniqueNameGenerator)
         def binder = new NaturalIdentifierBinder(uniqueNameGenerator)
 
+        persistentEntity.getMappedForm() >> mapping
         mapping.getIdentity() >> null
 
         when:
-        binder.bindNaturalIdentifier(mapping, rootClass)
+        binder.bindNaturalIdentifier(persistentEntity, rootClass)
 
         then:
         0 * uniqueNameGenerator._
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ClassPropertiesBinderSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ClassPropertiesBinderSpec.groovy
index 5f5be503ab..cda787c22b 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ClassPropertiesBinderSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ClassPropertiesBinderSpec.groovy
@@ -55,6 +55,6 @@ class ClassPropertiesBinderSpec extends 
HibernateGormDatastoreSpec {
         persistentClass.getProperty("hibernateProp1") == hibernateProp1
         persistentClass.getProperty("hibernateProp2") == hibernateProp2
 
-        1 * naturalIdentifierBinder.bindNaturalIdentifier(mapping, 
persistentClass)
+        1 * naturalIdentifierBinder.bindNaturalIdentifier(domainClass, 
persistentClass)
     }
 }

Reply via email to