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 e7b30f938668017a54046c37694c32eb84e53b86
Author: Walter Duque de Estrada <[email protected]>
AuthorDate: Fri Feb 13 15:00:16 2026 -0600

    refactored BasicValueIdCreator by removing GrailsHibernatePersistentEntity 
from its constructor and instead passing it as an argument to getBasicValueId, 
which then forwards it to createGenerator. I
      also updated the BasicValueIdCreator constructor to take Table as its 
final argument
---
 .../cfg/domainbinding/binder/IdentityBinder.java   |  5 -----
 .../cfg/domainbinding/binder/SimpleIdBinder.java   |  4 ++--
 .../domainbinding/util/BasicValueIdCreator.java    | 10 ++++-----
 .../domainbinding/BasicValueIdCreatorSpec.groovy   | 26 +++++++++++++---------
 .../cfg/domainbinding/SimpleIdBinderSpec.groovy    |  2 +-
 5 files changed, 23 insertions(+), 24 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 9960aa9de4..e6559afaa9 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
@@ -31,11 +31,6 @@ public class IdentityBinder {
         this.compositeIdBinder = compositeIdBinder;
     }
 
-    protected IdentityBinder() {
-        this.simpleIdBinder = null;
-        this.compositeIdBinder = null;
-    }
-
     public void bindIdentity(
             @Nonnull GrailsHibernatePersistentEntity domainClass,
             RootClass root,
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 0dba050694..71bb2c66a2 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
@@ -51,8 +51,8 @@ public class SimpleIdBinder {
         boolean useSequence = result != null && 
result.isTablePerConcreteClass();
         // create the id value
 
-        BasicValueIdCreator idCreator = this.basicValueIdCreator != null ? 
this.basicValueIdCreator : new BasicValueIdCreator(metadataBuildingContext, 
jdbcEnvironment, domainClass, entity.getTable());
-        BasicValue id = idCreator.getBasicValueId(mappedId, useSequence);
+        BasicValueIdCreator idCreator = this.basicValueIdCreator != null ? 
this.basicValueIdCreator : new BasicValueIdCreator(metadataBuildingContext, 
jdbcEnvironment, entity.getTable());
+        BasicValue id = idCreator.getBasicValueId(mappedId, domainClass, 
useSequence);
 
         var identifier = domainClass.getIdentity();
         if (mappedId != null) {
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/BasicValueIdCreator.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/BasicValueIdCreator.java
index cd3604a7de..75090e6339 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/BasicValueIdCreator.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/BasicValueIdCreator.java
@@ -15,16 +15,14 @@ import 
org.grails.orm.hibernate.cfg.domainbinding.generator.GrailsSequenceWrappe
 public class BasicValueIdCreator {
 
     private final JdbcEnvironment jdbcEnvironment;
-    private GrailsHibernatePersistentEntity domainClass;
     @SuppressWarnings("unused") // kept for tests that want to provide a 
prototype BasicValue
     private final BasicValue id;
     private final GrailsSequenceWrapper grailsSequenceWrapper;
 
-    public BasicValueIdCreator(MetadataBuildingContext 
metadataBuildingContext, JdbcEnvironment jdbcEnvironment, 
GrailsHibernatePersistentEntity domainClass, Table table) {
+    public BasicValueIdCreator(MetadataBuildingContext 
metadataBuildingContext, JdbcEnvironment jdbcEnvironment, Table table) {
         // create a prototype BasicValue (table will be set per-entity when 
creating the actual BasicValue)
         this.id =  new BasicValue(metadataBuildingContext, table);
         this.jdbcEnvironment = jdbcEnvironment;
-        this.domainClass = domainClass;
         this.grailsSequenceWrapper = new GrailsSequenceWrapper();
     }
 
@@ -39,14 +37,14 @@ public class BasicValueIdCreator {
     }
 
 
-    public BasicValue getBasicValueId(Identity mappedId, boolean useSequence) {
+    public BasicValue getBasicValueId(Identity mappedId, 
GrailsHibernatePersistentEntity domainClass, boolean useSequence) {
         // create a BasicValue for the specific entity table (do not reuse the 
prototype directly because table differs)
         String generatorName = Identity.determineGeneratorName(mappedId, 
useSequence);
-        id.setCustomIdGeneratorCreator(context -> createGenerator(mappedId, 
context, generatorName));
+        id.setCustomIdGeneratorCreator(context -> createGenerator(mappedId, 
domainClass, context, generatorName));
         return id;
     }
 
-    private Generator createGenerator(Identity mappedId, 
GeneratorCreationContext context, String generatorName) {
+    private Generator createGenerator(Identity mappedId, 
GrailsHibernatePersistentEntity domainClass, GeneratorCreationContext context, 
String generatorName) {
         return grailsSequenceWrapper.getGenerator(generatorName, context, 
mappedId, domainClass, jdbcEnvironment);
     }
 }
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/BasicValueIdCreatorSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/BasicValueIdCreatorSpec.groovy
index 1271ebf097..0446618c62 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/BasicValueIdCreatorSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/BasicValueIdCreatorSpec.groovy
@@ -3,6 +3,7 @@ package org.grails.orm.hibernate.cfg.domainbinding
 import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment
 
 import grails.gorm.specs.HibernateGormDatastoreSpec
+import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentEntity
 import org.grails.orm.hibernate.cfg.Identity
 import org.hibernate.boot.spi.MetadataBuildingContext
 import org.hibernate.generator.Generator
@@ -43,16 +44,17 @@ class BasicValueIdCreatorSpec extends 
HibernateGormDatastoreSpec {
         given:
         Identity mappedId = new Identity()
         mappedId.setGenerator(generatorName)
+        def domainClass = Mock(GrailsHibernatePersistentEntity)
         def mockGenerator = Mock(Generator)
         def context = Mock(GeneratorCreationContext)
 
         when:
-        BasicValue id = creator.getBasicValueId(mappedId, useSequence)
+        BasicValue id = creator.getBasicValueId(mappedId, domainClass, 
useSequence)
         def generatorCreator = id.getCustomIdGeneratorCreator()
         Generator generator = generatorCreator.createGenerator(context)
 
         then:
-        1 * grailsSequenceWrapper.getGenerator(generatorName, context, 
mappedId, _, jdbcEnvironment) >> mockGenerator
+        1 * grailsSequenceWrapper.getGenerator(generatorName, context, 
mappedId, domainClass, jdbcEnvironment) >> mockGenerator
         generator == mockGenerator
 
         where:
@@ -72,30 +74,32 @@ class BasicValueIdCreatorSpec extends 
HibernateGormDatastoreSpec {
     def "should default to native generator when mappedId is null"() {
         given:
         def mockGenerator = Mock(Generator)
+        def domainClass = Mock(GrailsHibernatePersistentEntity)
         def context = Mock(GeneratorCreationContext)
 
         when:
-        BasicValue id = creator.getBasicValueId(null, false)
+        BasicValue id = creator.getBasicValueId(null, domainClass, false)
         def generatorCreator = id.getCustomIdGeneratorCreator()
         Generator generator = generatorCreator.createGenerator(context)
 
         then:
-        1 * 
grailsSequenceWrapper.getGenerator(GrailsSequenceGeneratorEnum.NATIVE.toString(),
 context, null, _, jdbcEnvironment) >> mockGenerator
+        1 * 
grailsSequenceWrapper.getGenerator(GrailsSequenceGeneratorEnum.NATIVE.toString(),
 context, null, domainClass, jdbcEnvironment) >> mockGenerator
         generator == mockGenerator
     }
 
     def "should default to sequence-identity when mappedId is null and 
useSequence is true"() {
         given:
         def mockGenerator = Mock(Generator)
+        def domainClass = Mock(GrailsHibernatePersistentEntity)
         def context = Mock(GeneratorCreationContext)
 
         when:
-        BasicValue id = creator.getBasicValueId(null, true)
+        BasicValue id = creator.getBasicValueId(null, domainClass, true)
         def generatorCreator = id.getCustomIdGeneratorCreator()
         Generator generator = generatorCreator.createGenerator(context)
 
         then:
-        1 * 
grailsSequenceWrapper.getGenerator(GrailsSequenceGeneratorEnum.SEQUENCE_IDENTITY.toString(),
 context, null, _, jdbcEnvironment) >> mockGenerator
+        1 * 
grailsSequenceWrapper.getGenerator(GrailsSequenceGeneratorEnum.SEQUENCE_IDENTITY.toString(),
 context, null, domainClass, jdbcEnvironment) >> mockGenerator
         generator == mockGenerator
     }
 
@@ -104,15 +108,16 @@ class BasicValueIdCreatorSpec extends 
HibernateGormDatastoreSpec {
         Identity mappedId = new Identity()
         mappedId.setGenerator(GrailsSequenceGeneratorEnum.NATIVE.toString())
         def mockGenerator = Mock(Generator)
+        def domainClass = Mock(GrailsHibernatePersistentEntity)
         def context = Mock(GeneratorCreationContext)
 
         when:
-        BasicValue id = creator.getBasicValueId(mappedId, true)
+        BasicValue id = creator.getBasicValueId(mappedId, domainClass, true)
         def generatorCreator = id.getCustomIdGeneratorCreator()
         Generator generator = generatorCreator.createGenerator(context)
 
         then:
-        1 * 
grailsSequenceWrapper.getGenerator(GrailsSequenceGeneratorEnum.SEQUENCE_IDENTITY.toString(),
 context, mappedId, _, jdbcEnvironment) >> mockGenerator
+        1 * 
grailsSequenceWrapper.getGenerator(GrailsSequenceGeneratorEnum.SEQUENCE_IDENTITY.toString(),
 context, mappedId, domainClass, jdbcEnvironment) >> mockGenerator
         generator == mockGenerator
     }
 
@@ -120,14 +125,15 @@ class BasicValueIdCreatorSpec extends 
HibernateGormDatastoreSpec {
         given:
         Identity mappedId = new Identity()
         mappedId.setGenerator("custom")
+        def domainClass = Mock(GrailsHibernatePersistentEntity)
         def context = Mock(GeneratorCreationContext)
 
         when:
-        BasicValue id = creator.getBasicValueId(mappedId, false)
+        BasicValue id = creator.getBasicValueId(mappedId, domainClass, false)
         def generatorCreator = id.getCustomIdGeneratorCreator()
         generatorCreator.createGenerator(context)
 
         then:
-        1 * grailsSequenceWrapper.getGenerator("custom", context, mappedId, _, 
jdbcEnvironment) >> Mock(Generator)
+        1 * grailsSequenceWrapper.getGenerator("custom", context, mappedId, 
domainClass, jdbcEnvironment) >> Mock(Generator)
     }
 }
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 9880baaa67..30511a1f3c 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
@@ -35,7 +35,7 @@ class SimpleIdBinderSpec extends HibernateGormDatastoreSpec {
 
         // Use a Mock for BasicValueIdCreator and return a BasicValue based on 
the currentTable
         basicValueIdCreator = Mock(BasicValueIdCreator)
-        basicValueIdCreator.getBasicValueId(*_) >> { Identity id, boolean 
useSeq ->
+        basicValueIdCreator.getBasicValueId(_, _, _) >> { Identity id, 
GrailsHibernatePersistentEntity domainClass, boolean useSeq ->
             new BasicValue(metadataBuildingContext, currentTable)
         }
 

Reply via email to