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 8e11ab83c71f18e0f0c8bc01544643d3861699d8 Author: Walter B Duque de Estrada <[email protected]> AuthorDate: Mon Jan 19 08:45:07 2026 -0600 update progress --- .../orm/hibernate/cfg/GrailsDomainBinder.java | 4 +-- .../cfg/domainbinding/BasicValueIdCreator.java | 18 +++++++++---- .../cfg/domainbinding/GrailsTableGenerator.java | 31 +++++++++++++++++++--- .../cfg/domainbinding/SimpleIdBinder.java | 7 ++--- .../domainbinding/BasicValueIdCreatorSpec.groovy | 4 +-- 5 files changed, 48 insertions(+), 16 deletions(-) diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsDomainBinder.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsDomainBinder.java index 78c584b852..8f78bdc9be 100644 --- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsDomainBinder.java +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsDomainBinder.java @@ -2010,8 +2010,8 @@ public class GrailsDomainBinder @SuppressWarnings("unchecked") private void bindSimpleId(PersistentProperty identifier, RootClass entity, InFlightMetadataCollector mappings, Identity mappedId, String sessionFactoryBeanName) { - SimpleIdBinder simpleIdBinder = new SimpleIdBinder(metadataBuildingContext,namingStrategy); - simpleIdBinder.bindSimpleId(identifier, entity, mappedId); + SimpleIdBinder simpleIdBinder = new SimpleIdBinder(metadataBuildingContext,namingStrategy, getJdbcEnvironment()); + simpleIdBinder.bindSimpleId(identifier, entity, mappedId, getJdbcEnvironment()); } 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 f7dbf96098..5a64305d04 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 @@ -7,9 +7,10 @@ import java.util.Properties; import java.util.function.BiFunction; import org.hibernate.boot.spi.MetadataBuildingContext; +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.Assigned; import org.hibernate.id.IncrementGenerator; import org.hibernate.id.enhanced.SequenceStyleGenerator; import org.hibernate.id.enhanced.TableGenerator; @@ -22,17 +23,24 @@ import org.grails.orm.hibernate.cfg.Identity; public class BasicValueIdCreator { private final MetadataBuildingContext metadataBuildingContext; + private JdbcEnvironment jdbcEnvironment; private final Map<String, BiFunction<GeneratorCreationContext, Identity, Generator>> generatorFactories; - public BasicValueIdCreator(MetadataBuildingContext metadataBuildingContext) { + public BasicValueIdCreator(MetadataBuildingContext metadataBuildingContext, JdbcEnvironment jdbcEnvironment) { this.metadataBuildingContext = metadataBuildingContext; + this.jdbcEnvironment = jdbcEnvironment; this.generatorFactories = new HashMap<>(); initializeGeneratorFactories(); } - protected BasicValueIdCreator(MetadataBuildingContext metadataBuildingContext, Map<String, BiFunction<GeneratorCreationContext, Identity, Generator>> generatorFactories) { + protected BasicValueIdCreator(MetadataBuildingContext metadataBuildingContext + , JdbcEnvironment jdbcEnvironment + , Map<String, BiFunction<GeneratorCreationContext + , Identity + , Generator>> generatorFactories) { this.metadataBuildingContext = metadataBuildingContext; this.generatorFactories = generatorFactories; + this.jdbcEnvironment =jdbcEnvironment; } private void initializeGeneratorFactories() { @@ -46,8 +54,8 @@ public class BasicValueIdCreator { generatorFactories.put("uuid", (context, mappedId) -> new UuidGenerator(context.getType().getReturnedClass())); generatorFactories.put("uuid2", (context, mappedId) -> new UuidGenerator(context.getType().getReturnedClass())); generatorFactories.put("assigned", (context, mappedId) -> new Assigned()); - generatorFactories.put("table", (context, mappedId) -> new GrailsTableGenerator(context, mappedId)); - generatorFactories.put("enhanced-table", (context, mappedId) -> new GrailsTableGenerator(context,mappedId)); + generatorFactories.put("table", (context, mappedId) -> new GrailsTableGenerator(context, mappedId, jdbcEnvironment)); + generatorFactories.put("enhanced-table", (context, mappedId) -> new GrailsTableGenerator(context,mappedId, jdbcEnvironment)); generatorFactories.put("hilo", (context, mappedId) -> new SequenceStyleGenerator()); } diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/GrailsTableGenerator.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/GrailsTableGenerator.java index 336edfa39d..c8703468b6 100644 --- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/GrailsTableGenerator.java +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/GrailsTableGenerator.java @@ -1,5 +1,8 @@ package org.grails.orm.hibernate.cfg.domainbinding; +import org.hibernate.boot.model.relational.SqlStringGenerationContext; +import org.hibernate.boot.model.relational.internal.SqlStringGenerationContextImpl; +import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment; import org.hibernate.generator.GeneratorCreationContext; import org.hibernate.id.enhanced.TableGenerator; import org.hibernate.id.enhanced.StandardOptimizerDescriptor; @@ -10,7 +13,7 @@ import java.util.Properties; public class GrailsTableGenerator extends TableGenerator { - public GrailsTableGenerator(GeneratorCreationContext context, Identity mappedId) { + public GrailsTableGenerator(GeneratorCreationContext context, Identity mappedId, JdbcEnvironment jdbcEnvironment) { Properties generatorProps = Optional.ofNullable(mappedId) .map(Identity::getProperties) .orElse(new Properties()); @@ -36,8 +39,28 @@ public class GrailsTableGenerator extends TableGenerator { // Fixes the "SQL to format should not be null" error this.configure(context, generatorProps); + var database = context.getDatabase(); + this.registerExportables(database); + // Get the Name record from the physical name + var physicalName = database.getDefaultNamespace().getPhysicalName(); - // Ensures the hibernate_sequences table and initial rows are in the DDL -// this.registerExportables(context.getDatabase()); - } + // Use the record component accessors (catalog() and schema()) + // instead of the deprecated getCatalog()/getSchema() + String catalog = (physicalName.catalog() != null) + ? physicalName.catalog().getCanonicalName() + : null; + + String schema = (physicalName.schema() != null) + ? physicalName.schema().getCanonicalName() + : null; + + // Build the context and initialize templates + SqlStringGenerationContext context1 = SqlStringGenerationContextImpl.fromExplicit( + jdbcEnvironment, + database, + catalog, + schema + ); + this.initialize(context1); + } } \ No newline at end of file diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/SimpleIdBinder.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/SimpleIdBinder.java index e48b5251d2..48286fef28 100644 --- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/SimpleIdBinder.java +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/SimpleIdBinder.java @@ -1,6 +1,7 @@ package org.grails.orm.hibernate.cfg.domainbinding; import org.hibernate.boot.spi.MetadataBuildingContext; +import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment; import org.hibernate.mapping.BasicValue; import org.hibernate.mapping.PrimaryKey; import org.hibernate.mapping.Property; @@ -20,8 +21,8 @@ public class SimpleIdBinder { private final SimpleValueBinder simpleValueBinder; private final PropertyBinder propertyBinder; - public SimpleIdBinder(MetadataBuildingContext metadataBuildingContext, PersistentEntityNamingStrategy namingStrategy) { - this.basicValueIdCreator = new BasicValueIdCreator(metadataBuildingContext); + public SimpleIdBinder(MetadataBuildingContext metadataBuildingContext, PersistentEntityNamingStrategy namingStrategy, JdbcEnvironment jdbcEnvironment) { + this.basicValueIdCreator = new BasicValueIdCreator(metadataBuildingContext, jdbcEnvironment); this.hibernateEntityWrapper = new HibernateEntityWrapper(); this.simpleValueBinder =new SimpleValueBinder(namingStrategy); this.propertyBinder = new PropertyBinder(); @@ -35,7 +36,7 @@ public class SimpleIdBinder { } - public void bindSimpleId(PersistentProperty identifier, RootClass entity, Identity mappedId) { + public void bindSimpleId(PersistentProperty identifier, RootClass entity, Identity mappedId, JdbcEnvironment jdbcEnvironment) { boolean useSequence = hibernateEntityWrapper.getMappedForm(identifier.getOwner()).isTablePerConcreteClass(); // create the id value 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 0ee5aba33c..834c011aa4 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 @@ -23,10 +23,10 @@ class BasicValueIdCreatorSpec extends HibernateGormDatastoreSpec { def setup() { metadataBuildingContext = getGrailsDomainBinder().getMetadataBuildingContext() generatorFactories = [:] - creator = new BasicValueIdCreator(metadataBuildingContext, generatorFactories) + creator = new BasicValueIdCreator(metadataBuildingContext, getGrailsDomainBinder().getJdbcEnvironment(), generatorFactories) entity = new RootClass(metadataBuildingContext) table = new Table("test_table") - entity.setTable(table) + entity.setTable(table)\ } @Unroll
