This is an automated email from the ASF dual-hosted git repository. borinquenkid pushed a commit to branch merge-hibernate6 in repository https://gitbox.apache.org/repos/asf/grails-core.git
commit 63b9db61eb7ac2d882b1ab0fb61ad5f7b083a7e4 Author: Walter Duque de Estrada <[email protected]> AuthorDate: Sat Jul 5 23:21:45 2025 -0500 replaced dependency on deprecated NamingStrategy with PhysicalNamingStrategy --- .../HibernateMappingContextSessionFactoryBean.java | 8 +- .../orm/hibernate/cfg/GrailsDomainBinder.java | 152 ++++++++++++++------- .../HibernateConnectionSourceFactory.java | 4 +- .../HibernateConnectionSourceSettings.groovy | 6 +- 4 files changed, 111 insertions(+), 59 deletions(-) diff --git a/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/HibernateMappingContextSessionFactoryBean.java b/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/HibernateMappingContextSessionFactoryBean.java index 9215893e11..d2466634b3 100644 --- a/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/HibernateMappingContextSessionFactoryBean.java +++ b/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/HibernateMappingContextSessionFactoryBean.java @@ -8,9 +8,9 @@ import org.grails.orm.hibernate.cfg.HibernateMappingContextConfiguration; import org.hibernate.HibernateException; import org.hibernate.Interceptor; import org.hibernate.SessionFactory; +import org.hibernate.boot.model.naming.PhysicalNamingStrategy; import org.hibernate.cfg.Configuration; import org.hibernate.cfg.Environment; -import org.hibernate.cfg.NamingStrategy; import org.springframework.beans.BeanUtils; import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanClassLoaderAware; @@ -57,7 +57,7 @@ public class HibernateMappingContextSessionFactoryBean extends HibernateExceptio private Resource[] mappingJarLocations; private Resource[] mappingDirectoryLocations; private Interceptor entityInterceptor; - private NamingStrategy namingStrategy; + private PhysicalNamingStrategy namingStrategy; private Properties hibernateProperties; private Class<?>[] annotatedClasses; private String[] annotatedPackages; @@ -245,10 +245,10 @@ public class HibernateMappingContextSessionFactoryBean extends HibernateExceptio * Set a Hibernate NamingStrategy for the SessionFactory, determining the * physical column and table names given the info in the mapping document. */ - public void setNamingStrategy(NamingStrategy namingStrategy) { + public void setNamingStrategy(PhysicalNamingStrategy namingStrategy) { this.namingStrategy = namingStrategy; } - public NamingStrategy getNamingStrategy() { + public PhysicalNamingStrategy getNamingStrategy() { return namingStrategy; } diff --git a/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsDomainBinder.java b/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsDomainBinder.java index d2b012aef8..d8ca9123d3 100644 --- a/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsDomainBinder.java +++ b/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsDomainBinder.java @@ -15,14 +15,21 @@ package org.grails.orm.hibernate.cfg; import groovy.lang.Closure; - +import jakarta.persistence.Entity; import org.codehaus.groovy.runtime.DefaultGroovyMethods; import org.codehaus.groovy.transform.trait.Traits; import org.grails.datastore.mapping.core.connections.ConnectionSource; import org.grails.datastore.mapping.core.connections.ConnectionSourcesSupport; -import org.grails.datastore.mapping.model.*; +import org.grails.datastore.mapping.model.DatastoreConfigurationException; +import org.grails.datastore.mapping.model.PersistentEntity; +import org.grails.datastore.mapping.model.PersistentProperty; import org.grails.datastore.mapping.model.config.GormProperties; -import org.grails.datastore.mapping.model.types.*; +import org.grails.datastore.mapping.model.types.Association; +import org.grails.datastore.mapping.model.types.Basic; +import org.grails.datastore.mapping.model.types.Embedded; +import org.grails.datastore.mapping.model.types.ManyToMany; +import org.grails.datastore.mapping.model.types.TenantId; +import org.grails.datastore.mapping.model.types.ToMany; import org.grails.datastore.mapping.model.types.ToOne; import org.grails.datastore.mapping.reflect.EntityReflector; import org.grails.datastore.mapping.reflect.NameUtils; @@ -31,41 +38,78 @@ import org.hibernate.FetchMode; import org.hibernate.MappingException; import org.hibernate.boot.internal.MetadataBuildingContextRootImpl; import org.hibernate.boot.model.internal.BinderHelper; +import org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy; import org.hibernate.boot.model.naming.Identifier; -import org.hibernate.boot.spi.*; -import org.hibernate.cfg.*; +import org.hibernate.boot.model.naming.PhysicalNamingStrategy; +import org.hibernate.boot.spi.AccessType; +import org.hibernate.boot.spi.InFlightMetadataCollector; +import org.hibernate.boot.spi.MetadataBuildingContext; +import org.hibernate.boot.spi.MetadataContributor; import org.hibernate.engine.OptimisticLockStyle; +import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment; import org.hibernate.engine.spi.FilterDefinition; import org.hibernate.engine.spi.PersistentAttributeInterceptable; import org.hibernate.id.PersistentIdentifierGenerator; import org.hibernate.id.enhanced.SequenceStyleGenerator; -import org.hibernate.mapping.*; +import org.hibernate.mapping.Backref; +import org.hibernate.mapping.Bag; +import org.hibernate.mapping.BasicValue; import org.hibernate.mapping.Collection; +import org.hibernate.mapping.Column; +import org.hibernate.mapping.Component; +import org.hibernate.mapping.DependantValue; +import org.hibernate.mapping.Formula; +import org.hibernate.mapping.IndexBackref; +import org.hibernate.mapping.IndexedCollection; +import org.hibernate.mapping.JoinedSubclass; +import org.hibernate.mapping.KeyValue; import org.hibernate.mapping.ManyToOne; import org.hibernate.mapping.OneToMany; import org.hibernate.mapping.OneToOne; +import org.hibernate.mapping.PersistentClass; +import org.hibernate.mapping.PrimaryKey; +import org.hibernate.mapping.Property; +import org.hibernate.mapping.RootClass; +import org.hibernate.mapping.Selectable; +import org.hibernate.mapping.SimpleValue; +import org.hibernate.mapping.SingleTableSubclass; +import org.hibernate.mapping.Subclass; import org.hibernate.mapping.Table; +import org.hibernate.mapping.UnionSubclass; +import org.hibernate.mapping.UniqueKey; +import org.hibernate.mapping.Value; import org.hibernate.metamodel.mapping.JdbcMapping; import org.hibernate.persister.entity.UnionSubclassEntityPersister; -import org.hibernate.type.*; +import org.hibernate.type.EnumType; +import org.hibernate.type.ForeignKeyDirection; +import org.hibernate.type.StandardBasicTypes; +import org.hibernate.type.Type; import org.hibernate.usertype.UserCollectionType; import org.jboss.jandex.IndexView; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.util.StringUtils; -import jakarta.persistence.Entity; import java.io.UnsupportedEncodingException; import java.lang.reflect.Method; import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.sql.Types; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Properties; import java.util.Set; -import static java.util.Optional.ofNullable; +import java.util.SortedSet; +import java.util.StringTokenizer; + +;import static org.hibernate.boot.model.naming.Identifier.toIdentifier; /** * Handles the binding Grails domain classes and properties to the Hibernate runtime meta model. @@ -97,9 +141,9 @@ public class GrailsDomainBinder implements MetadataContributor { * Overrideable naming strategy. Defaults to <code>ImprovedNamingStrategy</code> but can * be configured in DataSource.groovy via <code>hibernate.naming_strategy = ...</code>. */ - public static Map<String, NamingStrategy> NAMING_STRATEGIES = new HashMap<>(); + public static Map<String, PhysicalNamingStrategy> NAMING_STRATEGIES = new HashMap<>(); static { - NAMING_STRATEGIES.put(ConnectionSource.DEFAULT, ImprovedNamingStrategy.INSTANCE); + NAMING_STRATEGIES.put(ConnectionSource.DEFAULT, new CamelCaseToUnderscoresNamingStrategy()); } private final CollectionType CT = new CollectionType(null, this) { @@ -115,6 +159,12 @@ public class GrailsDomainBinder implements MetadataContributor { private PersistentEntityNamingStrategy namingStrategy; private MetadataBuildingContext metadataBuildingContext; + public JdbcEnvironment getJdbcEnvironment() { + return metadataBuildingContext.getMetadataCollector().getDatabase().getJdbcEnvironment(); + } + + + public GrailsDomainBinder( String dataSourceName, String sessionFactoryName, @@ -188,7 +238,7 @@ public class GrailsDomainBinder implements MetadataContributor { /** * Override the default naming strategy given a Class or a full class name, - * or an instance of a NamingStrategy. + * or an instance of a PhysicalNamingStrategy. * * @param datasourceName the datasource name * @param strategy the class, name, or instance @@ -198,7 +248,7 @@ public class GrailsDomainBinder implements MetadataContributor { */ public static void configureNamingStrategy(final String datasourceName, final Object strategy) throws ClassNotFoundException, InstantiationException, IllegalAccessException { Class<?> namingStrategyClass = null; - NamingStrategy namingStrategy; + PhysicalNamingStrategy namingStrategy; if (strategy instanceof Class<?>) { namingStrategyClass = (Class<?>)strategy; } @@ -207,10 +257,10 @@ public class GrailsDomainBinder implements MetadataContributor { } if (namingStrategyClass == null) { - namingStrategy = (NamingStrategy)strategy; + namingStrategy = (PhysicalNamingStrategy)strategy; } else { - namingStrategy = (NamingStrategy)namingStrategyClass.newInstance(); + namingStrategy = (PhysicalNamingStrategy)namingStrategyClass.newInstance(); } NAMING_STRATEGIES.put(datasourceName, namingStrategy); @@ -658,7 +708,7 @@ public class GrailsDomainBinder implements MetadataContributor { private void bindCollectionWithJoinTable(ToMany property, InFlightMetadataCollector mappings, Collection collection, PropertyConfig config, String sessionFactoryBeanName) { - NamingStrategy namingStrategy = getNamingStrategy(sessionFactoryBeanName); + PhysicalNamingStrategy namingStrategy = getNamingStrategy(sessionFactoryBeanName); SimpleValue element; final boolean isBasicCollectionType = property instanceof Basic; @@ -683,9 +733,11 @@ public class GrailsDomainBinder implements MetadataContributor { columnName = config.getJoinTable().getColumn().getName(); } else { - columnName = isEnum ? namingStrategy.propertyToColumnName(className) : - addUnderscore(namingStrategy.propertyToColumnName(property.getName()), - namingStrategy.propertyToColumnName(className)); + + + var s = namingStrategy.toPhysicalColumnName(toIdentifier(className),getJdbcEnvironment()); + var p = namingStrategy.toPhysicalColumnName(toIdentifier(property.getName()),getJdbcEnvironment()); + columnName = isEnum ? s.toString() : addUnderscore(p.toString(), s.toString()); } if (isEnum) { @@ -724,7 +776,8 @@ public class GrailsDomainBinder implements MetadataContributor { columnName = config.getJoinTable().getColumn().getName(); } else { - columnName = namingStrategy.propertyToColumnName(NameUtils.decapitalize(domainClass.getName())) + FOREIGN_KEY_SUFFIX; + Identifier decapitalize = toIdentifier(NameUtils.decapitalize(domainClass.getName())); + columnName = namingStrategy.toPhysicalColumnName(decapitalize,getJdbcEnvironment()).toString() + FOREIGN_KEY_SUFFIX; } bindSimpleValue("long", element,true, columnName, mappings); @@ -1112,8 +1165,9 @@ public class GrailsDomainBinder implements MetadataContributor { PropertyConfig config = getPropertyConfig(property); JoinTable jt = config != null ? config.getJoinTable() : null; - NamingStrategy namingStrategy = getNamingStrategy(sessionFactoryBeanName); - String tableName = (jt != null && jt.getName() != null ? jt.getName() : namingStrategy.tableName(calculateTableForMany(property, sessionFactoryBeanName))); + PhysicalNamingStrategy namingStrategy = getNamingStrategy(sessionFactoryBeanName); + String s = calculateTableForMany(property, sessionFactoryBeanName); + String tableName = (jt != null && jt.getName() != null ? jt.getName() : namingStrategy.toPhysicalTableName(toIdentifier(s),getJdbcEnvironment()).toString()); String schemaName = getSchemaName(mappings); String catalogName = getCatalogName(mappings); if(jt != null) { @@ -1140,9 +1194,9 @@ public class GrailsDomainBinder implements MetadataContributor { * where you have two mapping tables for left_right and right_left */ private String calculateTableForMany(ToMany property, String sessionFactoryBeanName) { - NamingStrategy namingStrategy = getNamingStrategy(sessionFactoryBeanName); + PhysicalNamingStrategy namingStrategy = getNamingStrategy(sessionFactoryBeanName); - String propertyColumnName = namingStrategy.propertyToColumnName(property.getName()); + String propertyColumnName = namingStrategy.toPhysicalColumnName(toIdentifier(property.getName()), getJdbcEnvironment()).toString(); //fix for GRAILS-5895 PropertyConfig config = getPropertyConfig(property); JoinTable jt = config != null ? config.getJoinTable() : null; @@ -1169,14 +1223,15 @@ public class GrailsDomainBinder implements MetadataContributor { String right = getTableName(property.getAssociatedEntity(), sessionFactoryBeanName); - if (property instanceof ManyToMany) { + if (property instanceof ManyToMany property1) { if (hasJoinTableMapping) { return jt.getName(); } if (property.isOwningSide()) { return addUnderscore(left, propertyColumnName); } - return addUnderscore(right, namingStrategy.propertyToColumnName(((ManyToMany) property).getInversePropertyName())); + Identifier inversePropertyName = toIdentifier(property1.getInversePropertyName()); + return addUnderscore(right, namingStrategy.toPhysicalColumnName(inversePropertyName,getJdbcEnvironment()).toString()); } if (shouldCollectionBindWithJoinColumn(property)) { @@ -1221,18 +1276,18 @@ public class GrailsDomainBinder implements MetadataContributor { tableName = namingStrategy.resolveTableName(domainClass); } if(tableName == null) { - tableName = getNamingStrategy(sessionFactoryBeanName).classToTableName(shortName); + tableName = getNamingStrategy(sessionFactoryBeanName).toPhysicalTableName(toIdentifier(shortName),getJdbcEnvironment()).toString(); } } return tableName; } - private NamingStrategy getNamingStrategy(String sessionFactoryBeanName) { + private PhysicalNamingStrategy getNamingStrategy(String sessionFactoryBeanName) { String key = "sessionFactory".equals(sessionFactoryBeanName) ? ConnectionSource.DEFAULT : sessionFactoryBeanName.substring("sessionFactory_".length()); - NamingStrategy namingStrategy = NAMING_STRATEGIES.get(key); - return namingStrategy != null ? namingStrategy : new ImprovedNamingStrategy(); + PhysicalNamingStrategy namingStrategy = NAMING_STRATEGIES.get(key); + return namingStrategy != null ? namingStrategy : new CamelCaseToUnderscoresNamingStrategy(); } /** @@ -2328,7 +2383,7 @@ public class GrailsDomainBinder implements MetadataContributor { private void bindManyToOne(Association property, ManyToOne manyToOne, String path, InFlightMetadataCollector mappings, String sessionFactoryBeanName) { - NamingStrategy namingStrategy = getNamingStrategy(sessionFactoryBeanName); + PhysicalNamingStrategy namingStrategy = getNamingStrategy(sessionFactoryBeanName); bindManyToOneValues(property, manyToOne); PersistentEntity refDomainClass = property instanceof ManyToMany ? property.getOwner() : property.getAssociatedEntity(); @@ -2348,8 +2403,7 @@ public class GrailsDomainBinder implements MetadataContributor { if (!hasJoinKeyMapping(pc) ) { JoinTable jt = new JoinTable(); final ColumnConfig columnConfig = new ColumnConfig(); - columnConfig.setName(namingStrategy.propertyToColumnName(property.getName()) + - UNDERSCORE + FOREIGN_KEY_SUFFIX); + columnConfig.setName(namingStrategy.toPhysicalColumnName(toIdentifier(property.getName()), getJdbcEnvironment()).toString() + UNDERSCORE + FOREIGN_KEY_SUFFIX); jt.setKey(columnConfig); pc.setJoinTable(jt); } @@ -2378,7 +2432,7 @@ public class GrailsDomainBinder implements MetadataContributor { SimpleValue value, CompositeIdentity compositeId, PersistentEntity refDomainClass, String path, String sessionFactoryBeanName) { - NamingStrategy namingStrategy = getNamingStrategy(sessionFactoryBeanName); + PhysicalNamingStrategy namingStrategy = getNamingStrategy(sessionFactoryBeanName); String[] propertyNames = compositeId.getPropertyNames(); PropertyConfig config = getPropertyConfig(property); @@ -2412,7 +2466,7 @@ public class GrailsDomainBinder implements MetadataContributor { if(compositeIdentity != null) { for (PersistentProperty cip : compositeIdentity) { // for each property of a composite id by default we use the table name and the property name as a prefix - String compositeIdPrefix = addUnderscore(prefix, namingStrategy.propertyToColumnName(referencedProperty.getName())); + String compositeIdPrefix = addUnderscore(prefix, namingStrategy.toPhysicalColumnName(toIdentifier(referencedProperty.getName()), getJdbcEnvironment()).toString()); String suffix = getDefaultColumnName(cip, sessionFactoryBeanName); String finalColumnName = addUnderscore(compositeIdPrefix, suffix); cc = new ColumnConfig(); @@ -3098,7 +3152,7 @@ public class GrailsDomainBinder implements MetadataContributor { private String getColumnNameForPropertyAndPath(PersistentProperty grailsProp, String path, ColumnConfig cc, String sessionFactoryBeanName) { - NamingStrategy namingStrategy = getNamingStrategy(sessionFactoryBeanName); + PhysicalNamingStrategy namingStrategy = getNamingStrategy(sessionFactoryBeanName); // First try the column config. String columnName = null; @@ -3134,7 +3188,7 @@ public class GrailsDomainBinder implements MetadataContributor { if (columnName == null) { if (isNotEmpty(path)) { - columnName = addUnderscore(namingStrategy.propertyToColumnName(path), + columnName = addUnderscore(namingStrategy.toPhysicalColumnName(toIdentifier(path), getJdbcEnvironment()).toString(), getDefaultColumnName(grailsProp, sessionFactoryBeanName)); } else { columnName = getDefaultColumnName(grailsProp, sessionFactoryBeanName); @@ -3153,9 +3207,9 @@ public class GrailsDomainBinder implements MetadataContributor { private String getDefaultColumnName(PersistentProperty property, String sessionFactoryBeanName) { - NamingStrategy namingStrategy = getNamingStrategy(sessionFactoryBeanName); + PhysicalNamingStrategy namingStrategy = getNamingStrategy(sessionFactoryBeanName); - String columnName = namingStrategy.propertyToColumnName(property.getName()); + String columnName = namingStrategy.toPhysicalColumnName(toIdentifier(property.getName()), getJdbcEnvironment()).toString(); if (property instanceof Association) { Association association = (Association) property; boolean isBasic = property instanceof Basic; @@ -3172,12 +3226,12 @@ public class GrailsDomainBinder implements MetadataContributor { } if (!association.isBidirectional() && association instanceof org.grails.datastore.mapping.model.types.OneToMany) { - String prefix = namingStrategy.classToTableName(property.getOwner().getName()); + String prefix = namingStrategy.toPhysicalTableName(toIdentifier(property.getOwner().getName()), getJdbcEnvironment()).toString(); return addUnderscore(prefix, columnName) + FOREIGN_KEY_SUFFIX; } if (property.isInherited() && isBidirectionalManyToOne(property)) { - return namingStrategy.propertyToColumnName(property.getOwner().getName()) + '_'+ columnName + FOREIGN_KEY_SUFFIX; + return namingStrategy.toPhysicalColumnName(toIdentifier(property.getOwner().getName()), getJdbcEnvironment()).toString() + '_'+ columnName + FOREIGN_KEY_SUFFIX; } return columnName + FOREIGN_KEY_SUFFIX; @@ -3190,8 +3244,8 @@ public class GrailsDomainBinder implements MetadataContributor { private String getForeignKeyForPropertyDomainClass(PersistentProperty property, String sessionFactoryBeanName) { final String propertyName = NameUtils.decapitalize( property.getOwner().getName() ); - NamingStrategy namingStrategy = getNamingStrategy(sessionFactoryBeanName); - return namingStrategy.propertyToColumnName(propertyName) + FOREIGN_KEY_SUFFIX; + PhysicalNamingStrategy namingStrategy = getNamingStrategy(sessionFactoryBeanName); + return namingStrategy.toPhysicalColumnName(toIdentifier(propertyName), getJdbcEnvironment()).toString() + FOREIGN_KEY_SUFFIX; } private String getIndexColumnName(PersistentProperty property, String sessionFactoryBeanName) { @@ -3199,8 +3253,8 @@ public class GrailsDomainBinder implements MetadataContributor { if (pc != null && pc.getIndexColumn() != null && pc.getIndexColumn().getColumn() != null) { return pc.getIndexColumn().getColumn(); } - NamingStrategy namingStrategy = getNamingStrategy(sessionFactoryBeanName); - return namingStrategy.propertyToColumnName(property.getName()) + UNDERSCORE + IndexedCollection.DEFAULT_INDEX_COLUMN_NAME; + PhysicalNamingStrategy namingStrategy = getNamingStrategy(sessionFactoryBeanName); + return namingStrategy.toPhysicalColumnName(toIdentifier(property.getName()), getJdbcEnvironment()).toString() + UNDERSCORE + IndexedCollection.DEFAULT_INDEX_COLUMN_NAME; } private String getIndexColumnType(PersistentProperty property, String defaultType) { @@ -3218,8 +3272,8 @@ public class GrailsDomainBinder implements MetadataContributor { return pc.getJoinTable().getColumn().getName(); } - NamingStrategy namingStrategy = getNamingStrategy(sessionFactoryBeanName); - return namingStrategy.propertyToColumnName(property.getName()) + UNDERSCORE + IndexedCollection.DEFAULT_ELEMENT_COLUMN_NAME; + PhysicalNamingStrategy namingStrategy = getNamingStrategy(sessionFactoryBeanName); + return namingStrategy.toPhysicalColumnName(toIdentifier(property.getName()), getJdbcEnvironment()).toString() + UNDERSCORE + IndexedCollection.DEFAULT_ELEMENT_COLUMN_NAME; } private boolean hasJoinTableColumnNameMapping(PropertyConfig pc) { @@ -3577,5 +3631,3 @@ public class GrailsDomainBinder implements MetadataContributor { } } - - diff --git a/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/connections/HibernateConnectionSourceFactory.java b/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/connections/HibernateConnectionSourceFactory.java index 41f8f7928b..76b24aa4b8 100644 --- a/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/connections/HibernateConnectionSourceFactory.java +++ b/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/connections/HibernateConnectionSourceFactory.java @@ -14,9 +14,9 @@ import org.grails.orm.hibernate.support.AbstractClosureEventTriggeringIntercepto import org.grails.orm.hibernate.support.ClosureEventTriggeringInterceptor; import org.hibernate.Interceptor; import org.hibernate.SessionFactory; +import org.hibernate.boot.model.naming.PhysicalNamingStrategy; import org.hibernate.boot.spi.MetadataContributor; import org.hibernate.cfg.Configuration; -import org.hibernate.cfg.NamingStrategy; import org.springframework.beans.BeanUtils; import org.springframework.beans.BeansException; import org.springframework.beans.factory.annotation.Autowired; @@ -225,7 +225,7 @@ public class HibernateConnectionSourceFactory extends AbstractHibernateConnectio hibernateSettings.setEventTriggeringInterceptor(eventTriggeringInterceptor); try { - Class<? extends NamingStrategy> namingStrategy = hibernateSettings.getNaming_strategy(); + Class<? extends PhysicalNamingStrategy> namingStrategy = hibernateSettings.getNaming_strategy(); if(namingStrategy != null) { GrailsDomainBinder.configureNamingStrategy(name, namingStrategy); } diff --git a/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/connections/HibernateConnectionSourceSettings.groovy b/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/connections/HibernateConnectionSourceSettings.groovy index 5d329ffec4..f7d2b2b4c2 100644 --- a/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/connections/HibernateConnectionSourceSettings.groovy +++ b/grails-data-hibernate6/core/src/main/groovy/org/grails/orm/hibernate/connections/HibernateConnectionSourceSettings.groovy @@ -10,10 +10,10 @@ import org.grails.datastore.gorm.jdbc.connections.DataSourceSettings import org.grails.orm.hibernate.dirty.GrailsEntityDirtinessStrategy import org.grails.orm.hibernate.support.AbstractClosureEventTriggeringInterceptor import org.hibernate.CustomEntityDirtinessStrategy +import org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy +import org.hibernate.boot.model.naming.PhysicalNamingStrategy import org.hibernate.cfg.AvailableSettings import org.hibernate.cfg.Configuration -import org.hibernate.cfg.ImprovedNamingStrategy -import org.hibernate.cfg.NamingStrategy import org.springframework.core.io.Resource /** @@ -89,7 +89,7 @@ class HibernateConnectionSourceSettings extends ConnectionSourceSettings { /** * The naming strategy */ - Class<? extends NamingStrategy> naming_strategy = ImprovedNamingStrategy + Class<? extends PhysicalNamingStrategy> naming_strategy = CamelCaseToUnderscoresNamingStrategy /** *
