You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@grails.apache.org by bo...@apache.org on 2026/02/06 19:10:02 UTC
(grails-core) 15/19: GrailsHibernatePersistentProperty
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 <wb...@mac.com>
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);
}