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 1b0313ea8907f04cef8a06a80d8267d87caa4d2b
Author: Walter B Duque de Estrada <[email protected]>
AuthorDate: Sun Jan 25 01:31:42 2026 -0600

    Fix HibernateGormInstanceApiSpec and isolate broken IncrementGenerator in 
hibernate 7 module
---
 .../cfg/domainbinding/BasicValueIdCreator.java     | 25 ++++++----------
 .../cfg/domainbinding/GrailsIdentityGenerator.java |  2 +-
 .../domainbinding/IncrementGeneratorSpec.groovy    | 34 ++++++++++++++++++++++
 .../domainbinding/SequenceGeneratorsSpec.groovy    | 27 ++---------------
 4 files changed, 46 insertions(+), 42 deletions(-)

diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/BasicValueIdCreator.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/BasicValueIdCreator.java
index 14606df5dd..e1d7ffc549 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/BasicValueIdCreator.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/BasicValueIdCreator.java
@@ -66,25 +66,18 @@ public class BasicValueIdCreator {
     public BasicValue getBasicValueId(RootClass entity, Identity mappedId, 
boolean useSequence) {
         // create a BasicValue for the specific entity table (do not reuse the 
prototype directly because table differs)
         String generatorName = determineGeneratorName(mappedId, useSequence);
-        final String entityName = entity.getEntityName();
-
-        id.setCustomIdGeneratorCreator(context -> {
-            // Ensure the ID object knows which entity it belongs to
-            if (mappedId != null && mappedId.getName() == null) {
-                mappedId.setName(entityName);
-            }
-            Generator generator = 
generatorFactories.getOrDefault(generatorName, (ctx, mid) -> new 
GrailsNativeGenerator(ctx))
-                    .apply(context, mappedId);
-            System.out.println("GENERATOR: name=" + generatorName + ", type=" 
+ generator.getClass().getName());
-            if (generator instanceof org.hibernate.id.IdentifierGenerator 
identifierGenerator) {
-                
identifierGenerator.initialize(context.getSqlStringGenerationContext());
-            }
-            return generator;
-        });
-
+        if (mappedId != null && mappedId.getName() == null) {
+            mappedId.setName(entity.getEntityName());
+        }
+        id.setCustomIdGeneratorCreator(context -> createGenerator(mappedId, 
context, generatorName));
         return id;
     }
 
+    private Generator createGenerator(Identity mappedId, 
GeneratorCreationContext context, String generatorName) {
+        return generatorFactories.getOrDefault(generatorName, (ctx, mid) -> 
new GrailsNativeGenerator(ctx))
+                .apply(context, mappedId);
+    }
+
     private String determineGeneratorName(Identity mappedId, boolean 
useSequence) {
         return Optional.ofNullable(mappedId)
                 .map(Identity::getGenerator)
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/GrailsIdentityGenerator.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/GrailsIdentityGenerator.java
index 4092beb072..9169300fb9 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/GrailsIdentityGenerator.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/GrailsIdentityGenerator.java
@@ -10,7 +10,7 @@ import org.grails.orm.hibernate.cfg.Identity;
 
 public class GrailsIdentityGenerator extends IdentityGenerator {
 
-    public GrailsIdentityGenerator(GeneratorCreationContext context, 
org.grails.orm.hibernate.cfg.Identity mappedId) {
+    public GrailsIdentityGenerator(GeneratorCreationContext context, Identity 
mappedId) {
         var generatorProps = 
Optional.ofNullable(mappedId).map(Identity::getProperties).orElse(new 
Properties());
         super.configure(context, generatorProps);
         context.getProperty().getValue().getColumns().get(0).setIdentity(true);
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/IncrementGeneratorSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/IncrementGeneratorSpec.groovy
new file mode 100644
index 0000000000..4e6e05d71b
--- /dev/null
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/IncrementGeneratorSpec.groovy
@@ -0,0 +1,34 @@
+package org.grails.orm.hibernate.cfg.domainbinding
+
+import grails.gorm.annotation.Entity
+import grails.gorm.specs.HibernateGormDatastoreSpec
+import grails.gorm.transactions.Rollback
+
+class IncrementGeneratorSpec extends HibernateGormDatastoreSpec {
+
+    void setupSpec() {
+        manager.addAllDomainClasses([EntityWithIncrement])
+    }
+
+    @Rollback
+    //TODO Still broken
+    void "test increment generator"() {
+        when:
+        def entity1 = new EntityWithIncrement(name: "test1").save(flush: true)
+        def entity2 = new EntityWithIncrement(name: "test2").save(flush: true)
+
+        then:
+        entity1.id != null
+        entity2.id != null
+        entity2.id > entity1.id
+    }
+}
+
+@Entity
+class EntityWithIncrement {
+    Long id
+    String name
+    static mapping = {
+        id generator: 'increment'
+    }
+}
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/SequenceGeneratorsSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/SequenceGeneratorsSpec.groovy
index 80182e86b4..3905c30159 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/SequenceGeneratorsSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/SequenceGeneratorsSpec.groovy
@@ -13,8 +13,7 @@ class SequenceGeneratorsSpec extends 
HibernateGormDatastoreSpec {
                                      EntityWithSequence,
                                      EntityWithTable,
                                      EntityWithUUID,
-                                     EntityWithAssigned,
-                                     EntityWithIncrement])
+                                     EntityWithAssigned])
     }
 
 
@@ -72,19 +71,6 @@ class SequenceGeneratorsSpec extends 
HibernateGormDatastoreSpec {
         then:
         entity.id == 123
     }
-
-    @Rollback
-    //TODO Still broken
-    void "test increment generator"() {
-        when:
-        def entity1 = new EntityWithIncrement(name: "test1").save(flush: true)
-        def entity2 = new EntityWithIncrement(name: "test2").save(flush: true)
-
-        then:
-        entity1.id != null
-        entity2.id != null
-        entity2.id > entity1.id
-    }
 }
 
 @Entity
@@ -139,13 +125,4 @@ class EntityWithAssigned {
     static mapping = {
         id generator: 'assigned'
     }
-}
-
-@Entity
-class EntityWithIncrement {
-    Long id
-    String name
-    static mapping = {
-        id generator: 'increment'
-    }
-}
+}
\ No newline at end of file

Reply via email to