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 b73f86852fc4cd6bbbeb0413927e7d5ef23117c4
Author: Walter Duque de Estrada <[email protected]>
AuthorDate: Thu Feb 5 09:19:41 2026 -0600

    GrailsHibernatePersistentProperty
---
 .../orm/hibernate/cfg/GrailsDomainBinder.java      | 48 +++++++++++-----------
 .../hibernate/cfg/HibernateManyToManyProperty.java |  2 +-
 .../hibernate/cfg/HibernateManyToOneProperty.java  |  2 +-
 .../hibernate/cfg/HibernateOneToManyProperty.java  |  2 +-
 .../hibernate/cfg/HibernateOneToOneProperty.java   |  2 +-
 .../orm/hibernate/cfg/HibernateToManyProperty.java | 34 +++++++++++++++
 .../cfg/domainbinding/ComponentPropertyBinder.java |  4 +-
 .../cfg/domainbinding/GrailsPropertyBinder.java    | 11 +++--
 .../ShouldCollectionBindWithJoinColumn.java        |  6 +--
 .../cfg/domainbinding/TableForManyCalculator.java  |  6 +--
 .../collectionType/BagCollectionType.java          |  4 +-
 .../collectionType/CollectionType.java             |  8 ++--
 .../collectionType/ListCollectionType.java         |  4 +-
 .../collectionType/MapCollectionType.java          |  4 +-
 .../collectionType/SetCollectionType.java          |  4 +-
 .../collectionType/SortedSetCollectionType.java    |  4 +-
 .../secondpass/GrailsCollectionSecondPass.java     |  6 +--
 .../domainbinding/secondpass/ListSecondPass.java   |  4 +-
 .../domainbinding/secondpass/MapSecondPass.java    |  4 +-
 19 files changed, 95 insertions(+), 64 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 3eb64cb3da..68ed76ccc1 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
@@ -25,7 +25,6 @@ import org.grails.datastore.mapping.model.types.Association;
 import org.grails.datastore.mapping.model.types.Basic;
 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.orm.hibernate.cfg.domainbinding.ClassBinder;
 import org.grails.orm.hibernate.cfg.domainbinding.ColumnConfigToColumnBinder;
 import org.grails.orm.hibernate.cfg.domainbinding.EnumTypeBinder;
@@ -128,7 +127,7 @@ public class GrailsDomainBinder
 
     private final CollectionType CT = new CollectionType(null, this) {
         @Override
-        public Collection create(ToMany property, PersistentClass owner, 
String path, InFlightMetadataCollector mappings, String sessionFactoryBeanName) 
{
+        public Collection create(HibernateToManyProperty property, 
PersistentClass owner, String path, InFlightMetadataCollector mappings, String 
sessionFactoryBeanName) {
             return null;
         }
     };
@@ -250,7 +249,7 @@ public class GrailsDomainBinder
         NAMING_STRATEGY_PROVIDER.configureNamingStrategy(datasourceName, 
strategy);
     }
 
-    public void bindMapSecondPass(ToMany property, @Nonnull 
InFlightMetadataCollector mappings,
+    public void bindMapSecondPass(HibernateToManyProperty property, @Nonnull 
InFlightMetadataCollector mappings,
                                      Map<?, ?> persistentClasses, 
org.hibernate.mapping.Map map, String sessionFactoryBeanName) {
         bindCollectionSecondPass(property, mappings, persistentClasses, map, 
sessionFactoryBeanName);
 
@@ -259,7 +258,7 @@ public class GrailsDomainBinder
         String type = ((GrailsHibernatePersistentProperty) 
property).getIndexColumnType("string");
         String columnName1 = getIndexColumnName(property, 
sessionFactoryBeanName);
         new SimpleValueColumnBinder().bindSimpleValue(value, type, 
columnName1, true);
-        PropertyConfig mappedForm = property instanceof 
GrailsHibernatePersistentProperty ghpp ? ghpp.getMappedForm() : new 
PropertyConfig();
+        PropertyConfig mappedForm = property.getMappedForm();
         if (mappedForm.getIndexColumn() != null) {
             Column column = new 
SimpleValueColumnFetcher().getColumnForSimpleValue(value);
             ColumnConfig columnConfig = 
getSingleColumnConfig(mappedForm.getIndexColumn());
@@ -281,7 +280,7 @@ public class GrailsDomainBinder
             if (domainClass != null) {
                 mapping = domainClass.getMappedForm();
             }
-            String typeName = property instanceof 
GrailsHibernatePersistentProperty ghpp ? ghpp.getTypeName() : null;
+            String typeName = property.getTypeName();
             if (typeName == null ) {
 
                 if(property instanceof Basic) {
@@ -318,7 +317,7 @@ public class GrailsDomainBinder
      * @param list
      * @param sessionFactoryBeanName
      */
-    public void bindListSecondPass(ToMany property, @Nonnull 
InFlightMetadataCollector mappings,
+    public void bindListSecondPass(HibernateToManyProperty property, @Nonnull 
InFlightMetadataCollector mappings,
                                    Map<?, ?> persistentClasses, 
org.hibernate.mapping.List list, String sessionFactoryBeanName) {
 
         bindCollectionSecondPass(property, mappings, persistentClasses, list, 
sessionFactoryBeanName);
@@ -397,9 +396,8 @@ public class GrailsDomainBinder
         }
     }
 
-        public void bindCollectionSecondPass(ToMany property, @Nonnull 
InFlightMetadataCollector mappings,
-                                             Map<?, ?> persistentClasses, 
Collection collection, String sessionFactoryBeanName) {
-            PersistentClass associatedClass = null;
+            public void bindCollectionSecondPass(HibernateToManyProperty 
property, @Nonnull InFlightMetadataCollector mappings,
+                                                    Map<?, ?> 
persistentClasses, Collection collection, String sessionFactoryBeanName) {      
      PersistentClass associatedClass = null;
 
         if (LOG.isDebugEnabled())
             LOG.debug("Mapping collection: "
@@ -407,7 +405,7 @@ public class GrailsDomainBinder
                     + " -> "
                     + collection.getCollectionTable().getName());
 
-        PropertyConfig propConfig = property instanceof 
GrailsHibernatePersistentProperty ghpp ? ghpp.getMappedForm() : new 
PropertyConfig();
+        PropertyConfig propConfig = property.getMappedForm();
 
         PersistentEntity referenced = property.getAssociatedEntity();
         if (StringUtils.hasText(propConfig.getSort())) {
@@ -718,7 +716,7 @@ public class GrailsDomainBinder
         return theSet;
     }
 
-    private void bindCollectionWithJoinTable(ToMany property,
+    private void bindCollectionWithJoinTable(HibernateToManyProperty property,
                                                @Nonnull 
InFlightMetadataCollector mappings, Collection collection, PropertyConfig 
config, String sessionFactoryBeanName) {
 
 //        PhysicalNamingStrategy namingStrategy = 
getPhysicalNamingStrategy(sessionFactoryBeanName);
@@ -761,7 +759,7 @@ public class GrailsDomainBinder
                 if (domainClass != null) {
                     mapping = domainClass.getMappedForm();
                 }
-                String typeName = property instanceof 
GrailsHibernatePersistentProperty ghpp ? ghpp.getTypeName() : null;
+                String typeName = property.getTypeName();
                 if (typeName == null) {
                     Type type = 
mappings.getTypeConfiguration().getBasicTypeRegistry().getRegisteredType(className);
                     if (type != null) {
@@ -777,7 +775,7 @@ public class GrailsDomainBinder
                 if (joinColumnMappingOptional.isPresent()) {
                     Column column = new 
SimpleValueColumnFetcher().getColumnForSimpleValue(element);
                     ColumnConfig columnConfig = 
joinColumnMappingOptional.get();
-                    final PropertyConfig mappedForm = property instanceof 
GrailsHibernatePersistentProperty ghpp ? ghpp.getMappedForm() : new 
PropertyConfig();
+                    final PropertyConfig mappedForm = property.getMappedForm();
                     new 
ColumnConfigToColumnBinder().bindColumnConfigToColumn(column, columnConfig, 
mappedForm);
                 }
             }
@@ -814,8 +812,8 @@ public class GrailsDomainBinder
      * @param property The property to bind
      * @param manyToOne The inverse side
      */
-    private void bindUnidirectionalOneToManyInverseValues(ToMany property, 
ManyToOne manyToOne) {
-        PropertyConfig config = property instanceof 
GrailsHibernatePersistentProperty ghpp ? ghpp.getMappedForm() : new 
PropertyConfig();
+    private void 
bindUnidirectionalOneToManyInverseValues(HibernateToManyProperty property, 
ManyToOne manyToOne) {
+        PropertyConfig config = property.getMappedForm();
         manyToOne.setIgnoreNotFound(config.getIgnoreNotFound());
         final FetchMode fetch = config.getFetchMode();
         if(!fetch.equals(FetchMode.JOIN)) {
@@ -852,7 +850,7 @@ public class GrailsDomainBinder
             mapping = persistentEntity.getMappedForm();
         }
         boolean hasCompositeIdentifier = mapping != null && 
mapping.hasCompositeIdentifier();
-        if ((new ShouldCollectionBindWithJoinColumn().apply((ToMany) property) 
&& hasCompositeIdentifier) ||
+        if ((new 
ShouldCollectionBindWithJoinColumn().apply((HibernateToManyProperty) property) 
&& hasCompositeIdentifier) ||
                 (hasCompositeIdentifier && ( property instanceof ManyToMany))) 
{
             CompositeIdentity ci = (CompositeIdentity) mapping.getIdentity();
             new 
CompositeIdentifierToManyToOneBinder(namingStrategy).bindCompositeIdentifierToManyToOne((GrailsHibernatePersistentProperty)
 property, key, ci, refDomainClass, EMPTY_PATH);
@@ -1002,14 +1000,14 @@ public class GrailsDomainBinder
      * @param mappings   The Hibernate mappings instance
      * @param path
      */
-    public void bindCollection(ToMany property, Collection collection,
+    public void bindCollection(HibernateToManyProperty property, Collection 
collection,
                                PersistentClass owner, @Nonnull 
InFlightMetadataCollector mappings, String path, String sessionFactoryBeanName) 
{
 
         // set role
         String propertyName = getNameForPropertyAndPath(property, path);
         collection.setRole(qualify(property.getOwner().getName(), 
propertyName));
 
-        PropertyConfig pc = property instanceof 
GrailsHibernatePersistentProperty ghpp ? ghpp.getMappedForm() : new 
PropertyConfig();
+        PropertyConfig pc = property.getMappedForm();
         // configure eager fetching
         final FetchMode fetchMode = pc.getFetchMode();
         if (fetchMode == FetchMode.JOIN) {
@@ -1061,7 +1059,7 @@ public class GrailsDomainBinder
      * We bind collections with foreign keys if specified in the mapping and 
only if
      * it is a unidirectional one-to-many that is.
      */
-    private boolean shouldBindCollectionWithForeignKey(ToMany property) {
+    private boolean shouldBindCollectionWithForeignKey(HibernateToManyProperty 
property) {
         return ((property instanceof 
org.grails.datastore.mapping.model.types.OneToMany) && 
property.isBidirectional() ||
                 !(boolean) new 
ShouldCollectionBindWithJoinColumn().apply(property)) &&
                 !Map.class.isAssignableFrom(property.getType()) &&
@@ -1076,11 +1074,11 @@ public class GrailsDomainBinder
         return property.getName();
     }
 
-    private void bindCollectionTable(ToMany property, @Nonnull 
InFlightMetadataCollector mappings,
+    private void bindCollectionTable(HibernateToManyProperty property, 
@Nonnull InFlightMetadataCollector mappings,
                                        Collection collection, Table 
ownerTable, String sessionFactoryBeanName) {
 
         String owningTableSchema = ownerTable.getSchema();
-        PropertyConfig config = property instanceof 
GrailsHibernatePersistentProperty ghpp ? ghpp.getMappedForm() : new 
PropertyConfig();
+        PropertyConfig config = property.getMappedForm();
         JoinTable jt = config.getJoinTable();
 
         String s = new 
TableForManyCalculator(namingStrategy).calculateTableForMany(property, 
sessionFactoryBeanName);
@@ -1607,12 +1605,12 @@ public class GrailsDomainBinder
 
         private static final long serialVersionUID = -5540526942092611348L;
 
-        ToMany property;
+        HibernateToManyProperty property;
         @Nonnull InFlightMetadataCollector mappings;
         Collection collection;
         String sessionFactoryBeanName;
 
-        public GrailsCollectionSecondPass(ToMany property, @Nonnull 
InFlightMetadataCollector mappings,
+        public GrailsCollectionSecondPass(HibernateToManyProperty property, 
@Nonnull InFlightMetadataCollector mappings,
                                           Collection coll,  String 
sessionFactoryBeanName) {
             this.property = property;
             this.mappings = mappings;
@@ -1663,7 +1661,7 @@ public class GrailsDomainBinder
     public class ListSecondPass extends GrailsCollectionSecondPass {
         private static final long serialVersionUID = -3024674993774205193L;
 
-        public ListSecondPass(ToMany property, @Nonnull 
InFlightMetadataCollector mappings,
+        public ListSecondPass(HibernateToManyProperty property, @Nonnull 
InFlightMetadataCollector mappings,
                               Collection coll, String sessionFactoryBeanName) {
             super(property, mappings, coll, sessionFactoryBeanName);
         }
@@ -1685,7 +1683,7 @@ public class GrailsDomainBinder
     public class MapSecondPass extends GrailsCollectionSecondPass {
         private static final long serialVersionUID = -3244991685626409031L;
 
-        public MapSecondPass(ToMany property, @Nonnull 
InFlightMetadataCollector mappings,
+        public MapSecondPass(HibernateToManyProperty property, @Nonnull 
InFlightMetadataCollector mappings,
                              Collection coll, String sessionFactoryBeanName) {
             super(property, mappings, coll, sessionFactoryBeanName);
         }
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateManyToManyProperty.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateManyToManyProperty.java
index 0d7a3e32a8..67ea10d0d2 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateManyToManyProperty.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateManyToManyProperty.java
@@ -9,7 +9,7 @@ import java.beans.PropertyDescriptor;
 /**
  * Hibernate implementation of {@link 
org.grails.datastore.mapping.model.types.ManyToMany}
  */
-public class HibernateManyToManyProperty extends 
ManyToManyWithMapping<PropertyConfig> implements 
GrailsHibernatePersistentProperty {
+public class HibernateManyToManyProperty extends 
ManyToManyWithMapping<PropertyConfig> implements HibernateToManyProperty {
     public HibernateManyToManyProperty(PersistentEntity entity, MappingContext 
context, PropertyDescriptor property) {
         super(entity, context, property);
     }
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateManyToOneProperty.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateManyToOneProperty.java
index b357b02aff..21112df58a 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateManyToOneProperty.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateManyToOneProperty.java
@@ -9,7 +9,7 @@ import java.beans.PropertyDescriptor;
 /**
  * Hibernate implementation of {@link 
org.grails.datastore.mapping.model.types.ManyToOne}
  */
-public class HibernateManyToOneProperty extends 
ManyToOneWithMapping<PropertyConfig> implements 
GrailsHibernatePersistentProperty {
+public class HibernateManyToOneProperty extends 
ManyToOneWithMapping<PropertyConfig> implements HibernateToManyProperty {
     public HibernateManyToOneProperty(PersistentEntity entity, MappingContext 
context, PropertyDescriptor property) {
         super(entity, context, property);
     }
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateOneToManyProperty.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateOneToManyProperty.java
index 65c01a6c92..186339b7e5 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateOneToManyProperty.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateOneToManyProperty.java
@@ -9,7 +9,7 @@ import java.beans.PropertyDescriptor;
 /**
  * Hibernate implementation of {@link 
org.grails.datastore.mapping.model.types.OneToMany}
  */
-public class HibernateOneToManyProperty extends 
OneToManyWithMapping<PropertyConfig> implements 
GrailsHibernatePersistentProperty {
+public class HibernateOneToManyProperty extends 
OneToManyWithMapping<PropertyConfig> implements HibernateToManyProperty {
     public HibernateOneToManyProperty(PersistentEntity entity, MappingContext 
context, PropertyDescriptor property) {
         super(entity, context, property);
     }
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateOneToOneProperty.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateOneToOneProperty.java
index d8df3be439..7d77de6485 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateOneToOneProperty.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateOneToOneProperty.java
@@ -9,7 +9,7 @@ import java.beans.PropertyDescriptor;
 /**
  * Hibernate implementation of {@link 
org.grails.datastore.mapping.model.types.OneToOne}
  */
-public class HibernateOneToOneProperty extends 
OneToOneWithMapping<PropertyConfig> implements 
GrailsHibernatePersistentProperty {
+public class HibernateOneToOneProperty extends 
OneToOneWithMapping<PropertyConfig> implements HibernateToManyProperty {
     public HibernateOneToOneProperty(PersistentEntity entity, MappingContext 
context, PropertyDescriptor property) {
         super(entity, context, property);
     }
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateToManyProperty.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateToManyProperty.java
new file mode 100644
index 0000000000..57fe8d2e76
--- /dev/null
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateToManyProperty.java
@@ -0,0 +1,34 @@
+package org.grails.orm.hibernate.cfg;
+
+import org.grails.datastore.mapping.model.PersistentEntity;
+import org.grails.datastore.mapping.model.types.Association;
+
+/**
+ * Marker interface for Hibernate associations
+ */
+public interface HibernateToManyProperty extends 
GrailsHibernatePersistentProperty {
+
+    default boolean isOwningSide() {
+        return ((Association) this).isOwningSide();
+    }
+
+    default boolean isBidirectional() {
+        return ((Association) this).isBidirectional();
+    }
+
+    default Association getInverseSide() {
+        return ((Association) this).getInverseSide();
+    }
+
+    default boolean isCircular() {
+        return ((Association) this).isCircular();
+    }
+
+    default PersistentEntity getAssociatedEntity() {
+        return ((Association) this).getAssociatedEntity();
+    }
+
+    default boolean isBidirectionalOneToManyMap() {
+        return ((Association) this).isBidirectionalOneToManyMap();
+    }
+}
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/ComponentPropertyBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/ComponentPropertyBinder.java
index ebdd1192e1..2a7fabda9c 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/ComponentPropertyBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/ComponentPropertyBinder.java
@@ -26,10 +26,10 @@ import 
org.grails.datastore.mapping.model.PersistentProperty;
 import org.grails.datastore.mapping.model.config.GormProperties;
 import org.grails.datastore.mapping.model.types.Association;
 import org.grails.datastore.mapping.model.types.Embedded;
-import org.grails.datastore.mapping.model.types.ToMany;
 import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentEntity;
 import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentProperty;
 import org.grails.orm.hibernate.cfg.GrailsHibernateUtil;
+import org.grails.orm.hibernate.cfg.HibernateToManyProperty;
 import org.grails.orm.hibernate.cfg.Mapping;
 import org.grails.orm.hibernate.cfg.MappingCacheHolder;
 import org.grails.orm.hibernate.cfg.PersistentEntityNamingStrategy;
@@ -97,7 +97,7 @@ public class ComponentPropertyBinder {
         CollectionType collectionType = 
collectionHolder.get(currentGrailsProp.getType());
         if (collectionType != null) {
             // create collection
-            Collection collection = collectionType.create((ToMany) 
currentGrailsProp, persistentClass,
+            Collection collection = 
collectionType.create((HibernateToManyProperty) currentGrailsProp, 
persistentClass,
                     path, mappings, sessionFactoryBeanName);
             mappings.addCollectionBinding(collection);
             value = collection;
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/GrailsPropertyBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/GrailsPropertyBinder.java
index 93c4bb5e1f..93e98e38ec 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/GrailsPropertyBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/GrailsPropertyBinder.java
@@ -3,8 +3,8 @@ package org.grails.orm.hibernate.cfg.domainbinding;
 import jakarta.annotation.Nonnull;
 import org.grails.datastore.mapping.model.types.Association;
 import org.grails.datastore.mapping.model.types.Embedded;
-import org.grails.datastore.mapping.model.types.ToMany;
 import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentProperty;
+import org.grails.orm.hibernate.cfg.HibernateToManyProperty;
 import org.grails.orm.hibernate.cfg.Mapping;
 import org.grails.orm.hibernate.cfg.PersistentEntityNamingStrategy;
 import 
org.grails.orm.hibernate.cfg.domainbinding.collectionType.CollectionType;
@@ -82,7 +82,7 @@ public class GrailsPropertyBinder {
                 new 
SimpleValueBinder(namingStrategy).bindSimpleValue(currentGrailsProp, 
null,(SimpleValue) value, EMPTY_PATH);// No specific binder call needed
             }
             else { // Actual Collection
-                Collection collection = collectionType.create((ToMany) 
currentGrailsProp, persistentClass,
+                Collection collection = 
collectionType.create((HibernateToManyProperty) currentGrailsProp, 
persistentClass,
                         EMPTY_PATH, mappings, sessionFactoryBeanName);
                 mappings.addCollectionBinding(collection);
                 value = collection;
@@ -92,10 +92,9 @@ public class GrailsPropertyBinder {
         else if (currentGrailsProp.getType().isEnum()) {
             value = new BasicValue(metadataBuildingContext, table);
             // Apply enumTypeBinder if the created value is a SimpleValue
-            if (value instanceof SimpleValue simpleValue) {
-                String columnName = new 
ColumnNameForPropertyAndPathFetcher(namingStrategy).getColumnNameForPropertyAndPath(currentGrailsProp,
 EMPTY_PATH, null);
-                enumTypeBinder.bindEnumType(currentGrailsProp, 
currentGrailsProp.getType(), simpleValue, columnName);
-            }
+            SimpleValue simpleValue = (SimpleValue) value;
+            String columnName = new 
ColumnNameForPropertyAndPathFetcher(namingStrategy).getColumnNameForPropertyAndPath(currentGrailsProp,
 EMPTY_PATH, null);
+            enumTypeBinder.bindEnumType(currentGrailsProp, 
currentGrailsProp.getType(), simpleValue, columnName);
         }
         else if (currentGrailsProp.isHibernateOneToOne()) {
             value = new OneToOne(metadataBuildingContext, table, 
persistentClass);
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/ShouldCollectionBindWithJoinColumn.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/ShouldCollectionBindWithJoinColumn.java
index 3b8a22244a..312a8b44b4 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/ShouldCollectionBindWithJoinColumn.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/ShouldCollectionBindWithJoinColumn.java
@@ -4,14 +4,14 @@ import java.util.function.Function;
 
 import org.grails.datastore.mapping.model.PersistentProperty;
 import org.grails.datastore.mapping.model.types.Basic;
-import org.grails.datastore.mapping.model.types.ToMany;
+import org.grails.orm.hibernate.cfg.HibernateToManyProperty;
 
 import static java.util.Optional.ofNullable;
 
-public class ShouldCollectionBindWithJoinColumn implements 
Function<ToMany,Boolean> {
+public class ShouldCollectionBindWithJoinColumn implements 
Function<HibernateToManyProperty,Boolean> {
 
     @Override
-    public Boolean apply(ToMany property) {
+    public Boolean apply(HibernateToManyProperty property) {
         return 
(ofNullable(property).map(PersistentProperty::isUnidirectionalOneToMany).orElse(false)
 || (property instanceof Basic));
     }
 }
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/TableForManyCalculator.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/TableForManyCalculator.java
index 225465e1e2..d48696e96e 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/TableForManyCalculator.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/TableForManyCalculator.java
@@ -7,8 +7,8 @@ import org.hibernate.MappingException;
 import org.grails.datastore.mapping.model.PersistentEntity;
 import org.grails.datastore.mapping.model.types.Basic;
 import org.grails.datastore.mapping.model.types.ManyToMany;
-import org.grails.datastore.mapping.model.types.ToMany;
 import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentProperty;
+import org.grails.orm.hibernate.cfg.HibernateToManyProperty;
 import org.grails.orm.hibernate.cfg.JoinTable;
 import org.grails.orm.hibernate.cfg.PersistentEntityNamingStrategy;
 import org.grails.orm.hibernate.cfg.PropertyConfig;
@@ -50,10 +50,10 @@ public class TableForManyCalculator {
      * the relationship has to "own" the relationship so that there is not a 
situation
      * where you have two mapping tables for left_right and right_left
      */
-    public String calculateTableForMany(ToMany property, String 
sessionFactoryBeanName) {
+    public String calculateTableForMany(HibernateToManyProperty property, 
String sessionFactoryBeanName) {
         String propertyColumnName = 
namingStrategy.resolveColumnName(property.getName());
         //fix for GRAILS-5895
-        PropertyConfig config = ((GrailsHibernatePersistentProperty) 
property).getMappedForm();
+        PropertyConfig config = property.getMappedForm();
         JoinTable jt = config.getJoinTable();
         boolean hasJoinTableMapping = jt != null && jt.getName() != null;
         PersistentEntity domainClass1 = property.getOwner();
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/BagCollectionType.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/BagCollectionType.java
index b72d23fcbb..3c3157a475 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/BagCollectionType.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/BagCollectionType.java
@@ -8,8 +8,8 @@ import org.hibernate.mapping.PersistentClass;
 
 import jakarta.annotation.Nonnull;
 
-import org.grails.datastore.mapping.model.types.ToMany;
 import org.grails.orm.hibernate.cfg.GrailsDomainBinder;
+import org.grails.orm.hibernate.cfg.HibernateToManyProperty;
 
 public class BagCollectionType extends CollectionType {
 
@@ -18,7 +18,7 @@ public class BagCollectionType extends CollectionType {
     }
 
     @Override
-    public Collection create(ToMany property, PersistentClass owner,
+    public Collection create(HibernateToManyProperty property, PersistentClass 
owner,
                              String path, @Nonnull InFlightMetadataCollector 
mappings, String sessionFactoryBeanName) throws MappingException {
         Bag coll = new Bag(buildingContext, owner);
         coll.setCollectionTable(owner.getTable());
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/CollectionType.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/CollectionType.java
index cf36aaa4bb..1581586980 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/CollectionType.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/CollectionType.java
@@ -15,10 +15,10 @@ import org.hibernate.mapping.PersistentClass;
 
 import jakarta.annotation.Nonnull;
 
-import org.grails.datastore.mapping.model.types.ToMany;
 import org.grails.orm.hibernate.cfg.GrailsDomainBinder;
 import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentEntity;
 import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentProperty;
+import org.grails.orm.hibernate.cfg.HibernateToManyProperty;
 import org.grails.orm.hibernate.cfg.Mapping;
 
 /**
@@ -33,7 +33,7 @@ public abstract class CollectionType {
     protected final MetadataBuildingContext buildingContext;
 
 
-    public abstract Collection create(ToMany property, PersistentClass owner,
+    public abstract Collection create(HibernateToManyProperty property, 
PersistentClass owner,
                                       String path, @Nonnull 
InFlightMetadataCollector mappings, String sessionFactoryBeanName) throws 
MappingException;
 
     protected CollectionType(Class<?> clazz, GrailsDomainBinder binder) {
@@ -49,8 +49,8 @@ public abstract class CollectionType {
 
 
 
-    public String getTypeName(ToMany<?> property) {
-        return property instanceof GrailsHibernatePersistentProperty ghpp ? 
ghpp.getTypeName() : null;
+    public String getTypeName(HibernateToManyProperty property) {
+        return property.getTypeName();
     }
 
 }
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/ListCollectionType.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/ListCollectionType.java
index 264765a48a..91467256b7 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/ListCollectionType.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/ListCollectionType.java
@@ -9,8 +9,8 @@ import org.hibernate.mapping.PersistentClass;
 
 import jakarta.annotation.Nonnull;
 
-import org.grails.datastore.mapping.model.types.ToMany;
 import org.grails.orm.hibernate.cfg.GrailsDomainBinder;
+import org.grails.orm.hibernate.cfg.HibernateToManyProperty;
 
 public class ListCollectionType extends CollectionType {
 
@@ -19,7 +19,7 @@ public class ListCollectionType extends CollectionType {
     }
 
     @Override
-    public Collection create(ToMany property, PersistentClass owner,
+    public Collection create(HibernateToManyProperty property, PersistentClass 
owner,
                              String path, @Nonnull InFlightMetadataCollector 
mappings, String sessionFactoryBeanName) throws MappingException {
         org.hibernate.mapping.List coll = new 
org.hibernate.mapping.List(buildingContext, owner);
         coll.setCollectionTable(owner.getTable());
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/MapCollectionType.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/MapCollectionType.java
index cf98800c3b..c9e4f997dc 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/MapCollectionType.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/MapCollectionType.java
@@ -9,8 +9,8 @@ import org.hibernate.mapping.PersistentClass;
 
 import jakarta.annotation.Nonnull;
 
-import org.grails.datastore.mapping.model.types.ToMany;
 import org.grails.orm.hibernate.cfg.GrailsDomainBinder;
+import org.grails.orm.hibernate.cfg.HibernateToManyProperty;
 
 public class MapCollectionType extends CollectionType {
 
@@ -19,7 +19,7 @@ public class MapCollectionType extends CollectionType {
     }
 
     @Override
-    public Collection create(ToMany property, PersistentClass owner,
+    public Collection create(HibernateToManyProperty property, PersistentClass 
owner,
                              String path, @Nonnull InFlightMetadataCollector 
mappings, String sessionFactoryBeanName) throws MappingException {
         org.hibernate.mapping.Map map = new 
org.hibernate.mapping.Map(buildingContext, owner);
         map.setTypeName(getTypeName(property));
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/SetCollectionType.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/SetCollectionType.java
index d85475af30..136fcf51e0 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/SetCollectionType.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/SetCollectionType.java
@@ -9,8 +9,8 @@ import org.hibernate.mapping.PersistentClass;
 
 import jakarta.annotation.Nonnull;
 
-import org.grails.datastore.mapping.model.types.ToMany;
 import org.grails.orm.hibernate.cfg.GrailsDomainBinder;
+import org.grails.orm.hibernate.cfg.HibernateToManyProperty;
 
 public class SetCollectionType extends CollectionType {
 
@@ -19,7 +19,7 @@ public class SetCollectionType extends CollectionType {
     }
 
     @Override
-    public Collection create(ToMany property, PersistentClass owner,
+    public Collection create(HibernateToManyProperty property, PersistentClass 
owner,
                              String path, @Nonnull InFlightMetadataCollector 
mappings, String sessionFactoryBeanName) throws MappingException {
         org.hibernate.mapping.Set coll = new 
org.hibernate.mapping.Set(buildingContext, owner);
         coll.setCollectionTable(owner.getTable());
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/SortedSetCollectionType.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/SortedSetCollectionType.java
index 5098dd3ade..7456f2e3a8 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/SortedSetCollectionType.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/collectionType/SortedSetCollectionType.java
@@ -10,8 +10,8 @@ import org.hibernate.mapping.PersistentClass;
 
 import jakarta.annotation.Nonnull;
 
-import org.grails.datastore.mapping.model.types.ToMany;
 import org.grails.orm.hibernate.cfg.GrailsDomainBinder;
+import org.grails.orm.hibernate.cfg.HibernateToManyProperty;
 
 public class SortedSetCollectionType extends CollectionType {
 
@@ -20,7 +20,7 @@ public class SortedSetCollectionType extends CollectionType {
     }
 
     @Override
-    public Collection create(ToMany property, PersistentClass owner,
+    public Collection create(HibernateToManyProperty property, PersistentClass 
owner,
                              String path, @Nonnull InFlightMetadataCollector 
mappings, String sessionFactoryBeanName) throws MappingException {
         org.hibernate.mapping.Set coll = new 
org.hibernate.mapping.Set(buildingContext, owner);
         coll.setCollectionTable(owner.getTable());
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/GrailsCollectionSecondPass.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/GrailsCollectionSecondPass.java
index dbd6cf8e85..21fe8f8d4d 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/GrailsCollectionSecondPass.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/GrailsCollectionSecondPass.java
@@ -13,8 +13,8 @@ import org.hibernate.mapping.OneToMany;
 import org.hibernate.mapping.Selectable;
 import org.hibernate.mapping.Value;
 
-import org.grails.datastore.mapping.model.types.ToMany;
 import org.grails.orm.hibernate.cfg.GrailsDomainBinder;
+import org.grails.orm.hibernate.cfg.HibernateToManyProperty;
 
 /**
  * Second pass class for grails relationships. This is required as all
@@ -28,13 +28,13 @@ public class GrailsCollectionSecondPass implements 
org.hibernate.boot.spi.Second
     private static final long serialVersionUID = -5540526942092611348L;
 
     protected final GrailsDomainBinder grailsDomainBinder;
-    ToMany property;
+    HibernateToManyProperty property;
     @Nonnull
     InFlightMetadataCollector mappings;
     Collection collection;
     String sessionFactoryBeanName;
 
-    public GrailsCollectionSecondPass(GrailsDomainBinder grailsDomainBinder, 
ToMany property, @Nonnull InFlightMetadataCollector mappings,
+    public GrailsCollectionSecondPass(GrailsDomainBinder grailsDomainBinder, 
HibernateToManyProperty property, @Nonnull InFlightMetadataCollector mappings,
                                       Collection coll, String 
sessionFactoryBeanName) {
         this.grailsDomainBinder = grailsDomainBinder;
         this.property = property;
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/ListSecondPass.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/ListSecondPass.java
index 35d89b5077..fcb12b9bfb 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/ListSecondPass.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/ListSecondPass.java
@@ -8,14 +8,14 @@ import org.hibernate.MappingException;
 import org.hibernate.boot.spi.InFlightMetadataCollector;
 import org.hibernate.mapping.Collection;
 
-import org.grails.datastore.mapping.model.types.ToMany;
 import org.grails.orm.hibernate.cfg.GrailsDomainBinder;
+import org.grails.orm.hibernate.cfg.HibernateToManyProperty;
 
 public class ListSecondPass extends GrailsCollectionSecondPass {
     private static final long serialVersionUID = -3024674993774205193L;
 
 
-    public ListSecondPass(GrailsDomainBinder grailsDomainBinder, ToMany 
property, @Nonnull InFlightMetadataCollector mappings,
+    public ListSecondPass(GrailsDomainBinder grailsDomainBinder, 
HibernateToManyProperty property, @Nonnull InFlightMetadataCollector mappings,
                           Collection coll, String sessionFactoryBeanName) {
         super(grailsDomainBinder, property, mappings, coll, 
sessionFactoryBeanName);
     }
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/MapSecondPass.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/MapSecondPass.java
index f99f7520bf..5680a5e66e 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/MapSecondPass.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/MapSecondPass.java
@@ -8,14 +8,14 @@ import org.hibernate.MappingException;
 import org.hibernate.boot.spi.InFlightMetadataCollector;
 import org.hibernate.mapping.Collection;
 
-import org.grails.datastore.mapping.model.types.ToMany;
 import org.grails.orm.hibernate.cfg.GrailsDomainBinder;
+import org.grails.orm.hibernate.cfg.HibernateToManyProperty;
 
 public class MapSecondPass extends GrailsCollectionSecondPass {
     private static final long serialVersionUID = -3244991685626409031L;
 
 
-    public MapSecondPass(GrailsDomainBinder grailsDomainBinder, ToMany 
property, @Nonnull InFlightMetadataCollector mappings,
+    public MapSecondPass(GrailsDomainBinder grailsDomainBinder, 
HibernateToManyProperty property, @Nonnull InFlightMetadataCollector mappings,
                          Collection coll, String sessionFactoryBeanName) {
         super(grailsDomainBinder, property, mappings, coll, 
sessionFactoryBeanName);
     }


Reply via email to