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 9e3e2062f50016d854836358761ad7cc2587d994
Author: Walter Duque de Estrada <[email protected]>
AuthorDate: Fri Feb 13 08:44:25 2026 -0600

    systematically refactored the domainbinding package to use 
Hibernate-specific property types (HibernateManyToManyProperty, 
HibernateOneToManyProperty, etc.) for internal logic
      and instanceof checks, which improves clarity and type safety while 
maintaining GORM's core abstractions
---
 .gitignore                                         |  1 +
 .../orm/hibernate/cfg/GrailsDomainBinder.java      |  4 +++
 .../cfg/domainbinding/binder/CollectionBinder.java |  7 ++--
 .../cfg/domainbinding/binder/ColumnBinder.java     |  8 ++---
 .../cfg/domainbinding/binder/ManyToOneBinder.java  | 11 ++++---
 .../hibernate/HibernateToManyProperty.java         |  6 ++--
 .../secondpass/CollectionSecondPassBinder.java     | 13 ++++----
 .../secondpass/ListSecondPassBinder.java           |  4 +--
 .../secondpass/MapSecondPassBinder.java            |  4 ++-
 .../domainbinding/util/CascadeBehaviorFetcher.java | 12 ++++---
 .../util/DefaultColumnNameFetcher.java             |  7 ++--
 .../cfg/domainbinding/util/LogCascadeMapping.java  | 16 ++++-----
 .../domainbinding/util/TableForManyCalculator.java |  4 +--
 .../ComponentPropertyBinderSpec.groovy             | 38 ++++++++++------------
 .../cfg/domainbinding/LogCascadeMappingSpec.groovy | 14 +++++---
 .../cfg/domainbinding/ManyToOneBinderSpec.groovy   | 24 +++++++-------
 16 files changed, 94 insertions(+), 79 deletions(-)

diff --git a/.gitignore b/.gitignore
index d9ccaf508a..e66c1dbce7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -63,3 +63,4 @@ report01.txt
 report02.txt
 settings5.gradle
 settings6.gradle
+STATE_SNAPSHOT.xml
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 af6e9ca522..b7b33c78d7 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
@@ -23,6 +23,10 @@ import 
org.grails.orm.hibernate.cfg.domainbinding.binder.ColumnConfigToColumnBin
 import 
org.grails.orm.hibernate.cfg.domainbinding.binder.ComponentPropertyBinder;
 import org.grails.orm.hibernate.cfg.domainbinding.binder.CompositeIdBinder;
 import org.grails.orm.hibernate.cfg.domainbinding.binder.EnumTypeBinder;
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateManyToManyProperty;
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateManyToOneProperty;
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateOneToManyProperty;
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateOneToOneProperty;
 import org.grails.orm.hibernate.cfg.domainbinding.util.NamingStrategyProvider;
 import org.grails.orm.hibernate.cfg.domainbinding.binder.GrailsPropertyBinder;
 import org.grails.orm.hibernate.cfg.domainbinding.binder.IdentityBinder;
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/CollectionBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/CollectionBinder.java
index 28ef711d04..bc10354bb4 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/CollectionBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/CollectionBinder.java
@@ -5,6 +5,7 @@ import jakarta.annotation.Nonnull;
 import org.grails.orm.hibernate.cfg.GrailsDomainBinder;
 import org.grails.orm.hibernate.cfg.GrailsHibernateUtil;
 import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentProperty;
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateOneToManyProperty;
 import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateToManyProperty;
 import org.grails.orm.hibernate.cfg.PersistentEntityNamingStrategy;
 import org.grails.orm.hibernate.cfg.PropertyConfig;
@@ -89,7 +90,7 @@ public class CollectionBinder {
         if (property.shouldBindWithForeignKey()) {
             OneToMany oneToMany = new OneToMany(metadataBuildingContext, 
collection.getOwner());
             collection.setElement(oneToMany);
-            bindOneToMany((org.grails.datastore.mapping.model.types.OneToMany) 
property, oneToMany);
+            bindOneToMany((HibernateOneToManyProperty) property, oneToMany);
         } else {
             bindCollectionTable(property, mappings, collection, 
owner.getTable());
 
@@ -126,8 +127,8 @@ public class CollectionBinder {
         return property.getName();
     }
 
-    private void 
bindOneToMany(org.grails.datastore.mapping.model.types.OneToMany 
currentGrailsProp, OneToMany one) {
-        
one.setReferencedEntityName(currentGrailsProp.getAssociatedEntity().getName());
+    private void bindOneToMany(HibernateOneToManyProperty currentGrailsProp, 
OneToMany one) {
+        
one.setReferencedEntityName(currentGrailsProp.getHibernateAssociatedEntity().getName());
         one.setIgnoreNotFound(true);
     }
 
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ColumnBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ColumnBinder.java
index fe698bb34f..c40c0c1344 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ColumnBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ColumnBinder.java
@@ -6,11 +6,11 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.grails.datastore.mapping.model.types.Association;
-import org.grails.datastore.mapping.model.types.ManyToMany;
-import org.grails.datastore.mapping.model.types.OneToOne;
 import org.grails.datastore.mapping.model.types.ToOne;
 import org.grails.orm.hibernate.cfg.ColumnConfig;
 import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentProperty;
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateManyToManyProperty;
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateOneToOneProperty;
 import org.grails.orm.hibernate.cfg.Mapping;
 import org.grails.orm.hibernate.cfg.PersistentEntityNamingStrategy;
 import org.grails.orm.hibernate.cfg.PropertyConfig;
@@ -93,9 +93,9 @@ public class ColumnBinder {
             if (column.getName() == null) {
                 column.setName(columnName);
             }
-            if (property instanceof ManyToMany) {
+            if (property instanceof HibernateManyToManyProperty) {
                 column.setNullable(false);
-            } else if (property instanceof OneToOne && 
association.isBidirectional() && !association.isOwningSide()) {
+            } else if (property instanceof HibernateOneToOneProperty && 
association.isBidirectional() && !association.isOwningSide()) {
                 if (association.getInverseSide().isHasOne()) {
                     column.setNullable(false);
                 } else {
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ManyToOneBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ManyToOneBinder.java
index 40c754aaa8..48f654ec6c 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ManyToOneBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/binder/ManyToOneBinder.java
@@ -5,8 +5,6 @@ import org.hibernate.mapping.Column;
 import org.hibernate.mapping.ManyToOne;
 
 import org.grails.datastore.mapping.model.types.Association;
-import org.grails.datastore.mapping.model.types.ManyToMany;
-import org.grails.datastore.mapping.model.types.OneToOne;
 import org.grails.orm.hibernate.cfg.ColumnConfig;
 import org.grails.orm.hibernate.cfg.CompositeIdentity;
 import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentEntity;
@@ -15,6 +13,9 @@ import org.grails.orm.hibernate.cfg.JoinTable;
 import org.grails.orm.hibernate.cfg.Mapping;
 import org.grails.orm.hibernate.cfg.PersistentEntityNamingStrategy;
 import org.grails.orm.hibernate.cfg.PropertyConfig;
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateManyToManyProperty;
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateManyToOneProperty;
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateOneToOneProperty;
 import 
org.grails.orm.hibernate.cfg.domainbinding.util.SimpleValueColumnFetcher;
 
 import static 
org.grails.orm.hibernate.cfg.GrailsDomainBinder.FOREIGN_KEY_SUFFIX;
@@ -58,7 +59,7 @@ public class ManyToOneBinder {
             ,String path) {
         GrailsHibernatePersistentProperty hibernateProperty = 
(GrailsHibernatePersistentProperty) property;
         manyToOneValuesBinder.bindManyToOneValues(property, manyToOne);
-        GrailsHibernatePersistentEntity refDomainClass = 
(GrailsHibernatePersistentEntity) (property instanceof ManyToMany ? 
property.getOwner() : property.getAssociatedEntity());
+        GrailsHibernatePersistentEntity refDomainClass = 
(GrailsHibernatePersistentEntity) (property instanceof 
HibernateManyToManyProperty ? property.getOwner() : 
property.getAssociatedEntity());
         Mapping mapping = refDomainClass.getMappedForm();
 
         boolean isComposite = mapping != null && 
mapping.hasCompositeIdentifier();
@@ -67,7 +68,7 @@ public class ManyToOneBinder {
             
compositeIdentifierToManyToOneBinder.bindCompositeIdentifierToManyToOne(hibernateProperty,
 manyToOne, ci, refDomainClass, path);
         }
         else {
-            if (property.isCircular() && (property instanceof ManyToMany)) {
+            if (property.isCircular() && (property instanceof 
HibernateManyToManyProperty)) {
                 PropertyConfig pc = hibernateProperty.getMappedForm();
 
                 if (mapping != null && pc.getColumns().isEmpty()) {
@@ -91,7 +92,7 @@ public class ManyToOneBinder {
         }
 
         PropertyConfig config = hibernateProperty.getMappedForm();
-        boolean isOneToOne = property instanceof OneToOne;
+        boolean isOneToOne = property instanceof HibernateOneToOneProperty;
         boolean notComposite = !isComposite;
         if (isOneToOne && notComposite) {
             manyToOne.setAlternateUniqueKey(true);
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernateToManyProperty.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernateToManyProperty.java
index 858b074a8b..0b4f096665 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernateToManyProperty.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/hibernate/HibernateToManyProperty.java
@@ -2,8 +2,6 @@ package org.grails.orm.hibernate.cfg.domainbinding.hibernate;
 
 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.OneToMany;
 import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentEntity;
 import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentProperty;
 
@@ -42,10 +40,10 @@ public interface HibernateToManyProperty extends 
GrailsHibernatePersistentProper
      * @return Whether the collection should be bound with a foreign key
      */
     default boolean shouldBindWithForeignKey() {
-        return ((this instanceof OneToMany) && isBidirectional() ||
+        return ((this instanceof HibernateOneToManyProperty) && 
isBidirectional() ||
                 !isUnidirectionalOneToMany()) &&
                 !Map.class.isAssignableFrom(getType()) &&
-                !(this instanceof ManyToMany) &&
+                !(this instanceof HibernateManyToManyProperty) &&
                 !(this instanceof Basic);
     }
 }
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/CollectionSecondPassBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/CollectionSecondPassBinder.java
index 9c8e61763e..c53b7698b8 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/CollectionSecondPassBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/CollectionSecondPassBinder.java
@@ -6,8 +6,9 @@ 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.Basic;
-import org.grails.datastore.mapping.model.types.ManyToMany;
 import org.grails.orm.hibernate.cfg.*;
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateManyToManyProperty;
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateOneToManyProperty;
 import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateToManyProperty;
 import org.grails.orm.hibernate.cfg.domainbinding.util.BackticksRemover;
 import 
org.grails.orm.hibernate.cfg.domainbinding.binder.CollectionForPropertyConfigBinder;
@@ -71,7 +72,7 @@ public class CollectionSecondPassBinder {
 
         GrailsHibernatePersistentEntity referenced = 
property.getHibernateAssociatedEntity();
         if (StringUtils.hasText(propConfig.getSort())) {
-            if (!property.isBidirectional() && (property instanceof 
org.grails.datastore.mapping.model.types.OneToMany)) {
+            if (!property.isBidirectional() && (property instanceof 
HibernateOneToManyProperty)) {
                 throw new DatastoreConfigurationException("Default sort for 
associations ["+property.getHibernateOwner().getName()+"->" + 
property.getName() +
                         "] are not supported with unidirectional one to many 
relationships.");
             }
@@ -118,7 +119,7 @@ public class CollectionSecondPassBinder {
             new 
CollectionForPropertyConfigBinder().bindCollectionForPropertyConfig(collection, 
propConfig);
         }
 
-        final boolean isManyToMany = property instanceof ManyToMany;
+        final boolean isManyToMany = property instanceof 
HibernateManyToManyProperty;
         if(referenced != null && !isManyToMany && referenced.isMultiTenant()) {
             String filterCondition = 
referenced.getMultiTenantFilterCondition(defaultColumnNameFetcher);
             if(filterCondition != null) {
@@ -146,7 +147,7 @@ public class CollectionSecondPassBinder {
 
                 linkBidirectionalOneToMany(collection, associatedClass, key, 
otherSide);
 
-            } else if ((otherSide instanceof ManyToMany) || 
java.util.Map.class.isAssignableFrom(property.getType())) {
+            } else if ((otherSide instanceof HibernateManyToManyProperty) || 
java.util.Map.class.isAssignableFrom(property.getType())) {
 
                 bindDependentKeyValue(property, key, mappings, 
sessionFactoryBeanName);
 
@@ -199,7 +200,7 @@ public class CollectionSecondPassBinder {
             if (!property.shouldBindWithForeignKey()) {
                 bindCollectionWithJoinTable(property, mappings, collection, 
propConfig);
             } else {
-                
bindUnidirectionalOneToMany((org.grails.datastore.mapping.model.types.OneToMany)
 property, mappings, collection);
+                bindUnidirectionalOneToMany((HibernateOneToManyProperty) 
property, mappings, collection);
             }
         } else if (property.supportsJoinColumnMapping()) {
             bindCollectionWithJoinTable(property, mappings, collection, 
propConfig);
@@ -207,7 +208,7 @@ public class CollectionSecondPassBinder {
         forceNullableAndCheckUpdateable(key, property);
     }
 
-    private void 
bindUnidirectionalOneToMany(org.grails.datastore.mapping.model.types.OneToMany 
property, @Nonnull InFlightMetadataCollector mappings, Collection collection) {
+    private void bindUnidirectionalOneToMany(HibernateOneToManyProperty 
property, @Nonnull InFlightMetadataCollector mappings, Collection collection) {
         Value v = collection.getElement();
         v.createForeignKey();
         String entityName;
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/ListSecondPassBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/ListSecondPassBinder.java
index 210d8ae7ad..c9eed1ffee 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/ListSecondPassBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/ListSecondPassBinder.java
@@ -2,8 +2,8 @@ package org.grails.orm.hibernate.cfg.domainbinding.secondpass;
 
 import jakarta.annotation.Nonnull;
 import org.grails.datastore.mapping.model.PersistentEntity;
-import org.grails.datastore.mapping.model.types.ManyToMany;
 import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentProperty;
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateManyToManyProperty;
 import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateToManyProperty;
 import org.grails.orm.hibernate.cfg.PersistentEntityNamingStrategy;
 import org.grails.orm.hibernate.cfg.domainbinding.util.BackticksRemover;
@@ -48,7 +48,7 @@ public class ListSecondPassBinder {
 
         collectionSecondPassBinder.bindCollectionSecondPass(property, 
mappings, persistentClasses, list, sessionFactoryBeanName);
         String columnName = property.getIndexColumnName(namingStrategy);
-        final boolean isManyToMany = property instanceof ManyToMany;
+        final boolean isManyToMany = property instanceof 
HibernateManyToManyProperty;
 
         if (isManyToMany && !property.isOwningSide()) {
             throw new MappingException("Invalid association [" + property +
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/MapSecondPassBinder.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/MapSecondPassBinder.java
index 7060a23d04..4a599afd2c 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/MapSecondPassBinder.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/MapSecondPassBinder.java
@@ -6,6 +6,8 @@ import org.grails.datastore.mapping.model.types.Basic;
 import org.grails.orm.hibernate.cfg.ColumnConfig;
 import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentEntity;
 import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentProperty;
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateManyToManyProperty;
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateOneToManyProperty;
 import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateToManyProperty;
 import org.grails.orm.hibernate.cfg.Mapping;
 import org.grails.orm.hibernate.cfg.PersistentEntityNamingStrategy;
@@ -59,7 +61,7 @@ public class MapSecondPassBinder {
         }
         map.setIndex(value);
 
-        if(!(property instanceof 
org.grails.datastore.mapping.model.types.OneToMany) && !(property instanceof 
org.grails.datastore.mapping.model.types.ManyToMany)) {
+        if(!(property instanceof HibernateOneToManyProperty) && !(property 
instanceof HibernateManyToManyProperty)) {
 
             SimpleValue elt = new BasicValue(metadataBuildingContext, 
map.getCollectionTable());
             map.setElement(elt);
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/CascadeBehaviorFetcher.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/CascadeBehaviorFetcher.java
index efb795607e..565cc3337a 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/CascadeBehaviorFetcher.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/CascadeBehaviorFetcher.java
@@ -7,6 +7,10 @@ import 
org.grails.orm.hibernate.cfg.GrailsHibernatePersistentEntity;
 import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentProperty;
 import org.grails.orm.hibernate.cfg.Mapping;
 import org.grails.orm.hibernate.cfg.PropertyConfig;
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateManyToManyProperty;
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateManyToOneProperty;
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateOneToManyProperty;
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateOneToOneProperty;
 
 import org.hibernate.MappingException;
 import org.slf4j.Logger;
@@ -55,15 +59,15 @@ public class CascadeBehaviorFetcher {
         if (association.isHasOne()) {
             return ALL;
         }
-        else if (association.isOneToOne()) {
+        else if (association instanceof HibernateOneToOneProperty) {
             return association.isOwningSide() ?  ALL : SAVE_UPDATE;
         }
-        else if (association.isOneToMany()) {
+        else if (association instanceof HibernateOneToManyProperty) {
             return association.isCorrectlyOwned() ?  ALL : SAVE_UPDATE;
-        }  else if (association.isManyToMany()) {
+        }  else if (association instanceof HibernateManyToManyProperty) {
             return  association.isCorrectlyOwned() || association.isCircular() 
? SAVE_UPDATE :NONE;
         }
-        else if (association.isManyToOne()) {
+        else if (association instanceof HibernateManyToOneProperty) {
             if ( association.isCorrectlyOwned() && !association.isCircular()) {
                 return ALL;
             }
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/DefaultColumnNameFetcher.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/DefaultColumnNameFetcher.java
index f7f9eedbf6..2ef617a2a0 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/DefaultColumnNameFetcher.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/DefaultColumnNameFetcher.java
@@ -2,9 +2,10 @@ package org.grails.orm.hibernate.cfg.domainbinding.util;
 
 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.orm.hibernate.cfg.GrailsHibernatePersistentProperty;
 import org.grails.orm.hibernate.cfg.PersistentEntityNamingStrategy;
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateManyToManyProperty;
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateOneToManyProperty;
 
 public class DefaultColumnNameFetcher {
 
@@ -38,11 +39,11 @@ public class DefaultColumnNameFetcher {
                 return 
namingStrategyWrapper.resolveForeignKeyForPropertyDomainClass(property);
             }
 
-            if (property instanceof ManyToMany) {
+            if (property instanceof HibernateManyToManyProperty) {
                 return 
namingStrategyWrapper.resolveForeignKeyForPropertyDomainClass(property);
             }
 
-            if (!association.isBidirectional() && association instanceof 
org.grails.datastore.mapping.model.types.OneToMany) {
+            if (!association.isBidirectional() && association instanceof 
HibernateOneToManyProperty) {
                 String prefix = 
namingStrategyWrapper.resolveTableName(property.getOwner().getRootEntity().getJavaClass().getSimpleName());
                 return backticksRemover.apply(prefix) + UNDERSCORE + 
backticksRemover.apply(columnName) + FOREIGN_KEY_SUFFIX;
             }
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/LogCascadeMapping.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/LogCascadeMapping.java
index 1263051fbc..035ddbe8fa 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/LogCascadeMapping.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/LogCascadeMapping.java
@@ -1,10 +1,10 @@
 package org.grails.orm.hibernate.cfg.domainbinding.util;
 
 import org.grails.datastore.mapping.model.types.Association;
-import org.grails.datastore.mapping.model.types.ManyToMany;
-import org.grails.datastore.mapping.model.types.ManyToOne;
-import org.grails.datastore.mapping.model.types.OneToMany;
-import org.grails.datastore.mapping.model.types.OneToOne;
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateManyToManyProperty;
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateManyToOneProperty;
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateOneToManyProperty;
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateOneToOneProperty;
 
 import org.slf4j.Logger;
 
@@ -40,16 +40,16 @@ public class LogCascadeMapping {
      */
     private String getAssociationType(Association association) {
         // Use a standard if-else-if chain for compatibility with Java 17 and 
earlier.
-        if (association instanceof ManyToMany) {
+        if (association instanceof HibernateManyToManyProperty) {
             return "many-to-many";
         }
-        else if (association instanceof OneToMany) {
+        else if (association instanceof HibernateOneToManyProperty) {
             return "one-to-many";
         }
-        else if (association instanceof OneToOne) {
+        else if (association instanceof HibernateOneToOneProperty) {
             return "one-to-one";
         }
-        else if (association instanceof ManyToOne) {
+        else if (association instanceof HibernateManyToOneProperty) {
             return "many-to-one";
         }
         else if (association.isEmbedded()) {
diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/TableForManyCalculator.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/TableForManyCalculator.java
index 697be04b96..1756a6900c 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/TableForManyCalculator.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/util/TableForManyCalculator.java
@@ -6,12 +6,12 @@ import org.hibernate.MappingException;
 
 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.orm.hibernate.cfg.GrailsHibernatePersistentEntity;
 import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentProperty;
 import org.grails.orm.hibernate.cfg.JoinTable;
 import org.grails.orm.hibernate.cfg.PersistentEntityNamingStrategy;
 import org.grails.orm.hibernate.cfg.PropertyConfig;
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateManyToManyProperty;
 
 import static org.grails.orm.hibernate.cfg.GrailsDomainBinder.UNDERSCORE;
 
@@ -73,7 +73,7 @@ public class TableForManyCalculator {
         }
         String right = tableNameFetcher.getTableName(domainClass);
 
-        if (property instanceof ManyToMany property1) {
+        if (property instanceof HibernateManyToManyProperty property1) {
             if (hasJoinTableMapping) {
                 return jt.getName();
             }
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ComponentPropertyBinderSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ComponentPropertyBinderSpec.groovy
index 96147c4a85..c6dc4a1aed 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ComponentPropertyBinderSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ComponentPropertyBinderSpec.groovy
@@ -13,6 +13,10 @@ import org.grails.orm.hibernate.cfg.Mapping
 import org.grails.orm.hibernate.cfg.MappingCacheHolder
 import org.grails.orm.hibernate.cfg.PersistentEntityNamingStrategy
 import org.grails.orm.hibernate.cfg.PropertyConfig
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateManyToManyProperty
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateManyToOneProperty
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateOneToManyProperty
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateOneToOneProperty
 import org.grails.orm.hibernate.cfg.domainbinding.binder.CollectionBinder
 import org.grails.orm.hibernate.cfg.domainbinding.binder.ComponentBinder
 import 
org.grails.orm.hibernate.cfg.domainbinding.binder.ComponentPropertyBinder
@@ -33,15 +37,15 @@ import 
org.grails.orm.hibernate.cfg.domainbinding.util.PropertyFromValueCreator
 
 class ComponentPropertyBinderSpec extends HibernateGormDatastoreSpec {
 
-    abstract static class TestManyToOne extends GormManyToOne<PropertyConfig> 
implements GrailsHibernatePersistentProperty {
+    abstract static class TestManyToOne extends HibernateManyToOneProperty {
         TestManyToOne(PersistentEntity owner, MappingContext context, 
java.beans.PropertyDescriptor descriptor) {
-            super(owner, context, descriptor)
+            super(owner, context, descriptor);
         }
     }
 
-    abstract static class TestOneToOne extends GormOneToOne<PropertyConfig> 
implements GrailsHibernatePersistentProperty {
+    abstract static class TestOneToOne extends HibernateOneToOneProperty {
         TestOneToOne(PersistentEntity owner, MappingContext context, 
java.beans.PropertyDescriptor descriptor) {
-            super(owner, context, descriptor)
+            super(owner, context, descriptor);
         }
     }
 
@@ -76,7 +80,7 @@ class ComponentPropertyBinderSpec extends 
HibernateGormDatastoreSpec {
         prop.getName() >> name
         _ * prop.getOwner() >> owner
         if (prop instanceof GrailsHibernatePersistentProperty) {
-            _ * prop.getHibernateOwner() >> owner
+            _ * ((GrailsHibernatePersistentProperty)prop).getHibernateOwner() 
>> owner
         }
         def config = new PropertyConfig()
         mapping.getColumns().put(name, config)
@@ -93,9 +97,7 @@ class ComponentPropertyBinderSpec extends 
HibernateGormDatastoreSpec {
         ownerEntity.isRoot() >> true
 
         def currentGrailsProp = Mock(GrailsHibernatePersistentProperty)
-        _ * currentGrailsProp.getOwner() >> ownerEntity 
-        _ * currentGrailsProp.getHibernateOwner() >> ownerEntity 
-
+        
         def componentProperty = Mock(GrailsHibernatePersistentProperty)
         def mappings = Mock(InFlightMetadataCollector)
         def hibernateProperty = new Property()
@@ -105,6 +107,7 @@ class ComponentPropertyBinderSpec extends 
HibernateGormDatastoreSpec {
         ownerEntity.getMappedForm() >> mapping
         currentGrailsProp.getType() >> String
         setupProperty(currentGrailsProp, "street", mapping, ownerEntity)
+        setupProperty(componentProperty, "address", mapping, ownerEntity)
         
         propertyFromValueCreator.createProperty(_ as BasicValue, 
currentGrailsProp) >> hibernateProperty
 
@@ -132,8 +135,6 @@ class ComponentPropertyBinderSpec extends 
HibernateGormDatastoreSpec {
 
         def mapping = new Mapping()
         ownerEntity.getMappedForm() >> mapping
-        _ * currentGrailsProp.getOwner() >> ownerEntity 
-        _ * currentGrailsProp.getHibernateOwner() >> ownerEntity
         currentGrailsProp.getAssociatedEntity() >> 
Mock(GrailsHibernatePersistentEntity) { 
             getName() >> "Owner" 
             getMappedForm() >> new Mapping()
@@ -141,6 +142,7 @@ class ComponentPropertyBinderSpec extends 
HibernateGormDatastoreSpec {
         }
         currentGrailsProp.getType() >> Object
         setupProperty(currentGrailsProp, "owner", mapping, ownerEntity)
+        setupProperty(componentProperty, "address", mapping, ownerEntity)
         
         propertyFromValueCreator.createProperty(_ as HibernateManyToOne, 
currentGrailsProp) >> hibernateProperty
 
@@ -168,8 +170,6 @@ class ComponentPropertyBinderSpec extends 
HibernateGormDatastoreSpec {
 
         def mapping = new Mapping()
         ownerEntity.getMappedForm() >> mapping
-        _ * currentGrailsProp.getOwner() >> ownerEntity
-        _ * currentGrailsProp.getHibernateOwner() >> ownerEntity
         ((Association)currentGrailsProp).getInverseSide() >> Mock(Association) 
{
             isHasOne() >> false
             getOwner() >> Mock(GrailsHibernatePersistentEntity) { 
@@ -181,6 +181,7 @@ class ComponentPropertyBinderSpec extends 
HibernateGormDatastoreSpec {
         currentGrailsProp.getType() >> Object
         
((Association)currentGrailsProp).canBindOneToOneWithSingleColumnAndForeignKey() 
>> true
         setupProperty(currentGrailsProp, "detail", mapping, ownerEntity)
+        setupProperty(componentProperty, "address", mapping, ownerEntity)
         
         propertyFromValueCreator.createProperty(_ as HibernateOneToOne, 
currentGrailsProp) >> hibernateProperty
 
@@ -208,10 +209,9 @@ class ComponentPropertyBinderSpec extends 
HibernateGormDatastoreSpec {
 
         def mapping = new Mapping()
         ownerEntity.getMappedForm() >> mapping
-        _ * currentGrailsProp.getOwner() >> ownerEntity
-        _ * currentGrailsProp.getHibernateOwner() >> ownerEntity
         currentGrailsProp.getType() >> MyEnum
         setupProperty(currentGrailsProp, "type", mapping, ownerEntity)
+        setupProperty(componentProperty, "address", mapping, ownerEntity)
         
         namingStrategy.resolveColumnName("type") >> "type_col"
         namingStrategy.resolveColumnName("address") >> "address"
@@ -234,20 +234,16 @@ class ComponentPropertyBinderSpec extends 
HibernateGormDatastoreSpec {
         ownerEntity.isRoot() >> true
         def currentGrailsProp = Mock(GrailsHibernatePersistentProperty)
         def componentProperty = Mock(GrailsHibernatePersistentProperty)
-        def ownerEntityGHPE = Mock(GrailsHibernatePersistentEntity)
-        ownerEntityGHPE.isRoot() >> true
         def mappings = Mock(InFlightMetadataCollector)
         def hibernateProperty = new Property()
         hibernateProperty.setName("street")
         
         def mapping = new Mapping()
-        ownerEntityGHPE.getMappedForm() >> mapping
-        _ * currentGrailsProp.getOwner() >> ownerEntityGHPE 
-        _ * currentGrailsProp.getHibernateOwner() >> ownerEntityGHPE
+        ownerEntity.getMappedForm() >> mapping
         currentGrailsProp.getType() >> String
-        setupProperty(currentGrailsProp, "street", mapping, ownerEntityGHPE)
+        setupProperty(currentGrailsProp, "street", mapping, ownerEntity)
+        setupProperty(componentProperty, "address", mapping, ownerEntity)
         
-        componentProperty.getOwner() >> ownerEntity 
         ownerEntity.isComponentPropertyNullable(componentProperty) >> true
         
         propertyFromValueCreator.createProperty(_ as BasicValue, 
currentGrailsProp) >> hibernateProperty
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/LogCascadeMappingSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/LogCascadeMappingSpec.groovy
index e27d73e04a..93af4ab269 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/LogCascadeMappingSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/LogCascadeMappingSpec.groovy
@@ -6,6 +6,10 @@ import org.grails.datastore.mapping.model.types.ManyToMany
 import org.grails.datastore.mapping.model.types.ManyToOne
 import org.grails.datastore.mapping.model.types.OneToMany
 import org.grails.datastore.mapping.model.types.OneToOne
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateManyToManyProperty
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateManyToOneProperty
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateOneToManyProperty
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateOneToOneProperty
 import org.slf4j.Logger
 import spock.lang.Specification
 import spock.lang.Subject
@@ -46,11 +50,11 @@ class LogCascadeMappingSpec extends Specification {
                 typeDescription, "OwnerClass", "testProperty", 
TargetClass.name, cascadeBehavior)
 
         where:
-        associationClass | typeDescription
-        ManyToMany       | "many-to-many"
-        OneToMany        | "one-to-many"
-        OneToOne         | "one-to-one"
-        ManyToOne        | "many-to-one"
+        associationClass             | typeDescription
+        HibernateManyToManyProperty  | "many-to-many"
+        HibernateOneToManyProperty   | "one-to-many"
+        HibernateOneToOneProperty    | "one-to-one"
+        HibernateManyToOneProperty   | "many-to-one"
     }
 
     def "should log unknown for unrecognized association type"() {
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ManyToOneBinderSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ManyToOneBinderSpec.groovy
index 4f9fe62170..b5102ed33d 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ManyToOneBinderSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ManyToOneBinderSpec.groovy
@@ -2,14 +2,16 @@ package org.grails.orm.hibernate.cfg.domainbinding
 
 import grails.gorm.specs.HibernateGormDatastoreSpec
 import org.grails.datastore.mapping.model.types.Association
-import org.grails.datastore.mapping.model.types.ManyToMany
-import org.grails.datastore.mapping.model.types.OneToOne
 import org.grails.orm.hibernate.cfg.CompositeIdentity
 import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentEntity
 import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentProperty
 import org.grails.orm.hibernate.cfg.Mapping
 import org.grails.orm.hibernate.cfg.PersistentEntityNamingStrategy
 import org.grails.orm.hibernate.cfg.PropertyConfig
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateManyToManyProperty
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateManyToOneProperty
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateOneToManyProperty
+import 
org.grails.orm.hibernate.cfg.domainbinding.hibernate.HibernateOneToOneProperty
 import org.hibernate.MappingException
 import org.hibernate.mapping.Column
 import org.hibernate.mapping.ManyToOne
@@ -34,7 +36,7 @@ class ManyToOneBinderSpec extends HibernateGormDatastoreSpec {
 
         def binder = new ManyToOneBinder(namingStrategy, simpleValueBinder, 
manyToOneValuesBinder, compositeBinder, columnFetcher)
 
-        def association = Mock(Association, additionalInterfaces: 
[GrailsHibernatePersistentProperty])
+        def association = Mock(HibernateManyToOneProperty)
         def manyToOne = new 
ManyToOne(getGrailsDomainBinder().getMetadataBuildingContext(), null)
         def path = "/test"
         def mapping = new Mapping()
@@ -44,7 +46,7 @@ class ManyToOneBinderSpec extends HibernateGormDatastoreSpec {
         def propertyConfig = new PropertyConfig()
 
         association.getAssociatedEntity() >> refDomainClass
-        ((GrailsHibernatePersistentProperty)association).getMappedForm() >> 
propertyConfig
+        association.getMappedForm() >> propertyConfig
         mapping.setIdentity(hasCompositeId ? new CompositeIdentity() : null)
 
         when:
@@ -52,7 +54,7 @@ class ManyToOneBinderSpec extends HibernateGormDatastoreSpec {
 
         then:
         1 * manyToOneValuesBinder.bindManyToOneValues(association as 
Association, manyToOne)
-        compositeBinderCalls * 
compositeBinder.bindCompositeIdentifierToManyToOne(association as Association, 
manyToOne, _, refDomainClass, path)
+        compositeBinderCalls * 
compositeBinder.bindCompositeIdentifierToManyToOne(association as 
GrailsHibernatePersistentProperty, manyToOne, _, refDomainClass, path)
         simpleValueBinderCalls * simpleValueBinder.bindSimpleValue(association 
as GrailsHibernatePersistentProperty, null, manyToOne, path)
 
         where:
@@ -71,7 +73,7 @@ class ManyToOneBinderSpec extends HibernateGormDatastoreSpec {
 
         def binder = new ManyToOneBinder(namingStrategy, simpleValueBinder, 
manyToOneValuesBinder, compositeBinder, columnFetcher)
 
-        def property = Mock(ManyToMany, additionalInterfaces: 
[GrailsHibernatePersistentProperty])
+        def property = Mock(HibernateManyToManyProperty)
         def manyToOne = new 
ManyToOne(getGrailsDomainBinder().getMetadataBuildingContext(), null)
         def mapping = new Mapping()
         mapping.setColumns(new HashMap<String, PropertyConfig>())
@@ -83,7 +85,7 @@ class ManyToOneBinderSpec extends HibernateGormDatastoreSpec {
         property.isCircular() >> true
         property.getOwner() >> ownerEntity
         property.getName() >> "myCircularProp"
-        ((GrailsHibernatePersistentProperty)property).getMappedForm() >> 
propertyConfig
+        property.getMappedForm() >> propertyConfig
         namingStrategy.resolveColumnName("myCircularProp") >> 
"my_circular_prop"
 
         when:
@@ -108,7 +110,7 @@ class ManyToOneBinderSpec extends 
HibernateGormDatastoreSpec {
 
         def binder = new ManyToOneBinder(namingStrategy, simpleValueBinder, 
manyToOneValuesBinder, compositeBinder, columnFetcher)
 
-        def property = Mock(OneToOne, additionalInterfaces: 
[GrailsHibernatePersistentProperty])
+        def property = Mock(HibernateOneToOneProperty)
         def manyToOne = new 
ManyToOne(getGrailsDomainBinder().getMetadataBuildingContext(), null)
         def mapping = new Mapping()
         def refDomainClass = Mock(GrailsHibernatePersistentEntity) {
@@ -120,7 +122,7 @@ class ManyToOneBinderSpec extends 
HibernateGormDatastoreSpec {
 
         property.getAssociatedEntity() >> refDomainClass
         mapping.setIdentity(null)
-        ((GrailsHibernatePersistentProperty)property).getMappedForm() >> 
propertyConfig
+        property.getMappedForm() >> propertyConfig
         columnFetcher.getColumnForSimpleValue(manyToOne) >> column
 
         propertyConfig.isUnique() >> isUnique
@@ -159,7 +161,7 @@ class ManyToOneBinderSpec extends 
HibernateGormDatastoreSpec {
 
         def binder = new ManyToOneBinder(namingStrategy, simpleValueBinder, 
manyToOneValuesBinder, compositeBinder, columnFetcher)
 
-        def property = Mock(OneToOne, additionalInterfaces: 
[GrailsHibernatePersistentProperty])
+        def property = Mock(HibernateOneToOneProperty)
         def manyToOne = new 
ManyToOne(getGrailsDomainBinder().getMetadataBuildingContext(), null)
         def mapping = new Mapping()
         def refDomainClass = Mock(GrailsHibernatePersistentEntity) {
@@ -169,7 +171,7 @@ class ManyToOneBinderSpec extends 
HibernateGormDatastoreSpec {
 
         property.getAssociatedEntity() >> refDomainClass
         mapping.setIdentity(null)
-        ((GrailsHibernatePersistentProperty)property).getMappedForm() >> 
propertyConfig
+        property.getMappedForm() >> propertyConfig
         columnFetcher.getColumnForSimpleValue(manyToOne) >> null
 
         when:


Reply via email to