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 31bbf8ca32cd67be8e60e831afe86b8cc4d5b0a3 Author: Walter Duque de Estrada <[email protected]> AuthorDate: Wed Mar 11 22:41:57 2026 -0500 hibernate 7: GrailsHibernatePersistentEntity.java: Added a default getHibernateIdentity() --- .../cfg/domainbinding/binder/IdentityBinder.java | 5 ++--- .../RootPersistentClassCommonValuesBinder.java | 2 +- .../hibernate/GrailsHibernatePersistentEntity.java | 4 ++++ .../cfg/domainbinding/IdentityBinderSpec.groovy | 26 +++++++++++++--------- 4 files changed, 23 insertions(+), 14 deletions(-) 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 5bd8920266..0aadee5ad2 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 @@ -38,10 +38,9 @@ public class IdentityBinder { this.compositeIdBinder = compositeIdBinder; } - public void bindIdentity( - @Nonnull GrailsHibernatePersistentEntity domainClass, RootClass root, Mapping gormMapping) { + public void bindIdentity(@Nonnull GrailsHibernatePersistentEntity domainClass, RootClass root) { - HibernateIdentity id = gormMapping != null ? gormMapping.getIdentity() : null; + var id = domainClass.getHibernateIdentity(); if (id instanceof CompositeIdentity || (id == null && domainClass.getCompositeIdentity() != null)) { compositeIdBinder.bindCompositeId(domainClass, root, (CompositeIdentity) id); } else { diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootPersistentClassCommonValuesBinder.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootPersistentClassCommonValuesBinder.java index 34650efda0..bab7999c2b 100644 --- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootPersistentClassCommonValuesBinder.java +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/RootPersistentClassCommonValuesBinder.java @@ -98,7 +98,7 @@ public class RootPersistentClassCommonValuesBinder { + root.getTable().getName()); } - identityBinder.bindIdentity(domainClass, root, gormMapping); + identityBinder.bindIdentity(domainClass, root); versionBinder.bindVersion(domainClass.getVersion(), root); root.createPrimaryKey(); classPropertiesBinder.bindClassProperties(domainClass, root); 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 8208e46249..6f4f96bb8f 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 @@ -107,6 +107,10 @@ public interface GrailsHibernatePersistentEntity extends PersistentEntity { .collect(Collectors.toSet()); } + default HibernateIdentity getHibernateIdentity() { + return Optional.ofNullable(getMappedForm()).map(Mapping::getIdentity).orElse(null); + } + @Override HibernatePersistentProperty getIdentity(); 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 673b3799af..be605861a2 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 @@ -37,7 +37,8 @@ class IdentityBinderSpec extends HibernateGormDatastoreSpec { domainClass.getCompositeIdentity() >> null when: - binder.bindIdentity(domainClass, root, null) + binder.bindIdentity(domainClass, root) + then: 1 * simpleIdBinder.bindSimpleId(domainClass, root, null, _) @@ -52,7 +53,8 @@ class IdentityBinderSpec extends HibernateGormDatastoreSpec { domainClass.getCompositeIdentity() >> compositeProps when: - binder.bindIdentity(domainClass, root, null) + binder.bindIdentity(domainClass, root) + then: 1 * compositeIdBinder.bindCompositeId(domainClass, root, null) @@ -65,10 +67,11 @@ class IdentityBinderSpec extends HibernateGormDatastoreSpec { def mappings = Mock(InFlightMetadataCollector) def gormMapping = Mock(Mapping) def compositeIdentity = Mock(CompositeIdentity) - gormMapping.getIdentity() >> compositeIdentity + domainClass.getHibernateIdentity() >> compositeIdentity when: - binder.bindIdentity(domainClass, root, gormMapping) + binder.bindIdentity(domainClass, root) + then: 1 * compositeIdBinder.bindCompositeId(domainClass, root, compositeIdentity) @@ -81,14 +84,15 @@ class IdentityBinderSpec extends HibernateGormDatastoreSpec { def mappings = Mock(InFlightMetadataCollector) def gormMapping = Mock(Mapping) def identity = new Identity(name: "foo") - gormMapping.getIdentity() >> identity + domainClass.getHibernateIdentity() >> identity def identifierProp = Mock(HibernatePersistentProperty) domainClass.getHibernatePropertyByName("foo") >> identifierProp domainClass.getIdentity() >> identifierProp domainClass.getName() >> "MyEntity" when: - binder.bindIdentity(domainClass, root, gormMapping) + binder.bindIdentity(domainClass, root) + then: 1 * simpleIdBinder.bindSimpleId(domainClass, root, identity, _) @@ -101,13 +105,14 @@ class IdentityBinderSpec extends HibernateGormDatastoreSpec { def mappings = Mock(InFlightMetadataCollector) def gormMapping = Mock(Mapping) def identity = new Identity(name: "MyEntity") - gormMapping.getIdentity() >> identity + domainClass.getHibernateIdentity() >> identity def identifierProp = Mock(HibernatePersistentProperty) domainClass.getIdentity() >> identifierProp domainClass.getName() >> "MyEntity" when: - binder.bindIdentity(domainClass, root, gormMapping) + binder.bindIdentity(domainClass, root) + then: 1 * simpleIdBinder.bindSimpleId(domainClass, root, identity, _) @@ -121,13 +126,14 @@ class IdentityBinderSpec extends HibernateGormDatastoreSpec { def mappings = Mock(InFlightMetadataCollector) def gormMapping = Mock(Mapping) def identity = new Identity() - gormMapping.getIdentity() >> identity + domainClass.getHibernateIdentity() >> identity def identifierProp = Mock(HibernatePersistentProperty) domainClass.getIdentity() >> identifierProp domainClass.getName() >> "MyEntity" when: - binder.bindIdentity(domainClass, root, gormMapping) + binder.bindIdentity(domainClass, root) + then: identity.getName() == "MyEntity"
