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 bc054e938afc9a40d4d746255fdc533d6dfa3fea
Author: Walter B Duque de Estrada <[email protected]>
AuthorDate: Thu Jan 29 22:01:55 2026 -0600

    progress
---
 .../domainbinding/GrailsIncrementGenerator.java    |  4 +-
 .../generator/GrailsSequenceGeneratorEnum.java     | 94 ++++++++++++++++++++++
 .../generator/GrailsSequenceWrapper.java           | 23 ++++++
 3 files changed, 119 insertions(+), 2 deletions(-)

diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/GrailsIncrementGenerator.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/GrailsIncrementGenerator.java
index 1fd05fb5c8..280a9c47ef 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/GrailsIncrementGenerator.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/GrailsIncrementGenerator.java
@@ -2,7 +2,7 @@ package org.grails.orm.hibernate.cfg.domainbinding;
 
 import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentEntity;
 import org.grails.orm.hibernate.cfg.Identity;
-import org.hibernate.boot.model.relational.Database;
+
 import org.hibernate.boot.model.relational.SqlStringGenerationContext;
 import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment;
 import org.hibernate.engine.spi.SharedSessionContractImplementor;
@@ -39,7 +39,7 @@ public class GrailsIncrementGenerator extends 
IncrementGenerator {
     private String resolvedColumnName;
     private Class<?> resolvedReturnClass;
 
-    public GrailsIncrementGenerator(GeneratorCreationContext context, Identity 
mappedId, JdbcEnvironment jdbcEnvironment, GrailsHibernatePersistentEntity 
domainClass) {
+    public GrailsIncrementGenerator(GeneratorCreationContext context, Identity 
mappedId, GrailsHibernatePersistentEntity domainClass) {
         Properties params = new Properties();
         if (mappedId != null && mappedId.getProperties() != null) {
             params.putAll(mappedId.getProperties());
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/generator/GrailsSequenceGeneratorEnum.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/generator/GrailsSequenceGeneratorEnum.java
new file mode 100644
index 0000000000..aa6df75fd9
--- /dev/null
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/generator/GrailsSequenceGeneratorEnum.java
@@ -0,0 +1,94 @@
+package org.grails.orm.hibernate.cfg.domainbinding.generator;
+
+import java.util.Arrays;
+import java.util.Optional;
+
+import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment;
+import org.hibernate.generator.Assigned;
+import org.hibernate.generator.Generator;
+import org.hibernate.generator.GeneratorCreationContext;
+import org.hibernate.id.uuid.UuidGenerator;
+
+import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentEntity;
+import org.grails.orm.hibernate.cfg.Identity;
+import org.grails.orm.hibernate.cfg.domainbinding.GrailsIdentityGenerator;
+import org.grails.orm.hibernate.cfg.domainbinding.GrailsIncrementGenerator;
+import org.grails.orm.hibernate.cfg.domainbinding.GrailsNativeGenerator;
+import org.grails.orm.hibernate.cfg.domainbinding.GrailsSequenceStyleGenerator;
+import org.grails.orm.hibernate.cfg.domainbinding.GrailsTableGenerator;
+
+/**
+ * Enum for Grails ID generator strategies.
+ */
+public enum GrailsSequenceGeneratorEnum {
+    IDENTITY("identity"),
+    SEQUENCE("sequence"),
+    SEQUENCE_IDENTITY("sequence-identity"),
+    INCREMENT("increment"),
+    UUID("uuid"),
+    UUID2("uuid2"),
+    ASSIGNED("assigned"),
+    TABLE("table"),
+    ENHANCED_TABLE("enhanced-table"),
+    HILO("hilo"),
+    NATIVE("native");
+
+    private final String name;
+
+    GrailsSequenceGeneratorEnum(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    @Override
+    public String toString() {
+        return name;
+    }
+
+    public static Optional<GrailsSequenceGeneratorEnum> fromName(String name) {
+        return Arrays.stream(values())
+                .filter(e -> e.name.equals(name))
+                .findFirst();
+    }
+
+    public static Generator getGenerator(
+            String name,
+            GeneratorCreationContext context,
+            Identity mappedId,
+            GrailsHibernatePersistentEntity domainClass,
+            JdbcEnvironment jdbcEnvironment) {
+        return getGenerator(fromName(name).orElse(NATIVE), context, mappedId, 
domainClass, jdbcEnvironment);
+    }
+
+    public static Generator getGenerator(
+            GrailsSequenceGeneratorEnum sequenceGeneratorEnum,
+            GeneratorCreationContext context,
+            Identity mappedId,
+            GrailsHibernatePersistentEntity domainClass,
+            JdbcEnvironment jdbcEnvironment) {
+        switch (sequenceGeneratorEnum) {
+            case IDENTITY:
+                return new GrailsIdentityGenerator(context, mappedId);
+            case SEQUENCE:
+            case SEQUENCE_IDENTITY:
+            case HILO:
+                return new GrailsSequenceStyleGenerator(context, mappedId, 
jdbcEnvironment);
+            case INCREMENT:
+                return new GrailsIncrementGenerator(context, mappedId, 
domainClass);
+            case UUID:
+            case UUID2:
+                return new UuidGenerator(context.getType().getReturnedClass());
+            case ASSIGNED:
+                return new Assigned();
+            case TABLE:
+            case ENHANCED_TABLE:
+                return new GrailsTableGenerator(context, mappedId, 
jdbcEnvironment);
+            case NATIVE:
+            default:
+                return new GrailsNativeGenerator(context);
+        }
+    }
+}
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/generator/GrailsSequenceWrapper.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/generator/GrailsSequenceWrapper.java
new file mode 100644
index 0000000000..7b983c2b5e
--- /dev/null
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/generator/GrailsSequenceWrapper.java
@@ -0,0 +1,23 @@
+package org.grails.orm.hibernate.cfg.domainbinding.generator;
+
+import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment;
+import org.hibernate.generator.Generator;
+import org.hibernate.generator.GeneratorCreationContext;
+
+import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentEntity;
+import org.grails.orm.hibernate.cfg.Identity;
+
+import static 
org.grails.orm.hibernate.cfg.domainbinding.generator.GrailsSequenceGeneratorEnum.NATIVE;
+import static 
org.grails.orm.hibernate.cfg.domainbinding.generator.GrailsSequenceGeneratorEnum.fromName;
+
+public class GrailsSequenceWrapper {
+
+    public Generator getGenerator(
+            String name,
+            GeneratorCreationContext context,
+            Identity mappedId,
+            GrailsHibernatePersistentEntity domainClass,
+            JdbcEnvironment jdbcEnvironment) {
+        return 
GrailsSequenceGeneratorEnum.getGenerator(fromName(name).orElse(NATIVE), 
context, mappedId, domainClass, jdbcEnvironment);
+    }
+}

Reply via email to