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 4334492a035d3fd2a57ea86c18b296b818f9341d Author: Walter Duque de Estrada <[email protected]> AuthorDate: Fri Feb 6 23:00:54 2026 -0600 progress --- .../orm/hibernate/cfg/GrailsDomainBinder.java | 19 ------------ .../cfg/GrailsHibernatePersistentProperty.java | 9 ++++++ .../cfg/domainbinding/CollectionBinder.java | 34 +++++++++++++--------- .../domainbinding/CollectionSecondPassBinder.java | 8 +++++ .../cfg/domainbinding/ListSecondPassBinder.java | 12 ++++---- .../cfg/domainbinding/MapSecondPassBinder.java | 18 ++++-------- .../secondpass/GrailsCollectionSecondPass.java | 2 +- .../domainbinding/secondpass/ListSecondPass.java | 9 ++++-- .../domainbinding/secondpass/MapSecondPass.java | 9 ++++-- .../domainbinding/ListSecondPassBinderSpec.groovy | 4 ++- .../domainbinding/MapSecondPassBinderSpec.groovy | 4 ++- 11 files changed, 69 insertions(+), 59 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 fb810a11dc..c8592f2b5c 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 @@ -222,27 +222,8 @@ public class GrailsDomainBinder NAMING_STRATEGY_PROVIDER.configureNamingStrategy(datasourceName, strategy); } - public void bindMapSecondPass(HibernateToManyProperty property, @Nonnull InFlightMetadataCollector mappings, - Map<?, ?> persistentClasses, org.hibernate.mapping.Map map, String sessionFactoryBeanName) { - collectionBinder.bindMapSecondPass(property, mappings, persistentClasses, map, sessionFactoryBeanName); - } - /** - * @param property - * @param mappings - * @param persistentClasses - * @param list - * @param sessionFactoryBeanName - */ - public void bindListSecondPass(HibernateToManyProperty property, @Nonnull InFlightMetadataCollector mappings, - Map<?, ?> persistentClasses, org.hibernate.mapping.List list, String sessionFactoryBeanName) { - collectionBinder.bindListSecondPass(property, mappings, persistentClasses, list, sessionFactoryBeanName); - } - public void bindCollectionSecondPass(HibernateToManyProperty property, @Nonnull InFlightMetadataCollector mappings, - Map<?, ?> persistentClasses, Collection collection, String sessionFactoryBeanName) { - collectionBinder.bindCollectionSecondPass(property, mappings, persistentClasses, collection, sessionFactoryBeanName); - } /** * First pass to bind collection to Hibernate metamodel, sets up second pass diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsHibernatePersistentProperty.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsHibernatePersistentProperty.java index 9686ddfffd..6b98c2926a 100644 --- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsHibernatePersistentProperty.java +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsHibernatePersistentProperty.java @@ -7,6 +7,7 @@ import org.grails.datastore.mapping.model.types.Embedded; import java.util.Optional; import org.hibernate.MappingException; +import org.hibernate.mapping.IndexedCollection; import org.hibernate.usertype.UserCollectionType; /** @@ -115,4 +116,12 @@ public interface GrailsHibernatePersistentProperty extends PersistentProperty<Pr .map(ic -> getTypeName(ic, getHibernateOwner().getMappedForm())) .orElse(defaultType); } + + default String getIndexColumnName(PersistentEntityNamingStrategy namingStrategy) { + PropertyConfig pc = getMappedForm(); + if (pc.getIndexColumn() != null && pc.getIndexColumn().getColumn() != null) { + return pc.getIndexColumn().getColumn(); + } + return namingStrategy.resolveColumnName(getName()) + GrailsDomainBinder.UNDERSCORE + IndexedCollection.DEFAULT_INDEX_COLUMN_NAME; + } } \ No newline at end of file diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/CollectionBinder.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/CollectionBinder.java index 180fcd6cf3..1687ef0417 100644 --- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/CollectionBinder.java +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/CollectionBinder.java @@ -3,9 +3,6 @@ package org.grails.orm.hibernate.cfg.domainbinding; import jakarta.annotation.Nonnull; import org.grails.datastore.mapping.model.PersistentEntity; import org.grails.datastore.mapping.model.PersistentProperty; -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.GrailsDomainBinder; import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentEntity; import org.grails.orm.hibernate.cfg.GrailsHibernatePersistentProperty; @@ -61,9 +58,9 @@ public class CollectionBinder { this.metadataBuildingContext = metadataBuildingContext; this.grailsDomainBinder = grailsDomainBinder; this.namingStrategy = namingStrategy; - this.listSecondPassBinder = new ListSecondPassBinder(metadataBuildingContext, this); this.collectionSecondPassBinder = new CollectionSecondPassBinder(metadataBuildingContext, namingStrategy); - this.mapSecondPassBinder = new MapSecondPassBinder(metadataBuildingContext, namingStrategy, this); + this.listSecondPassBinder = new ListSecondPassBinder(metadataBuildingContext, collectionSecondPassBinder); + this.mapSecondPassBinder = new MapSecondPassBinder(metadataBuildingContext, namingStrategy, collectionSecondPassBinder); } /** @@ -120,10 +117,10 @@ public class CollectionBinder { mappings.addSecondPass(new GrailsCollectionSecondPass(grailsDomainBinder, this, property, mappings, collection, sessionFactoryBeanName)); } else if (collection instanceof org.hibernate.mapping.List) { - mappings.addSecondPass(new ListSecondPass(grailsDomainBinder, this, property, mappings, collection, sessionFactoryBeanName)); + mappings.addSecondPass(new ListSecondPass(grailsDomainBinder, this, listSecondPassBinder, property, mappings, collection, sessionFactoryBeanName)); } else if (collection instanceof org.hibernate.mapping.Map) { - mappings.addSecondPass(new MapSecondPass(grailsDomainBinder, this, property, mappings, collection, sessionFactoryBeanName)); + mappings.addSecondPass(new MapSecondPass(grailsDomainBinder, this, mapSecondPassBinder, property, mappings, collection, sessionFactoryBeanName)); } else { // Collection -> Bag mappings.addSecondPass(new GrailsCollectionSecondPass(grailsDomainBinder, this, property, mappings, collection, sessionFactoryBeanName)); @@ -187,15 +184,24 @@ public class CollectionBinder { tableName, null, false, metadataBuildingContext)); } - public String getIndexColumnName(PersistentProperty property) { - PropertyConfig pc = property instanceof GrailsHibernatePersistentProperty ghpp ? ghpp.getMappedForm() : new PropertyConfig(); - if (pc.getIndexColumn() != null && pc.getIndexColumn().getColumn() != null) { - return pc.getIndexColumn().getColumn(); + + + public Property getProperty(PersistentClass associatedClass, String propertyName) throws MappingException { + try { + return associatedClass.getProperty(propertyName); + } + catch (MappingException e) { + //maybe it's squirreled away in a composite primary key + if (associatedClass.getKey() instanceof Component) { + return ((Component) associatedClass.getKey()).getProperty(propertyName); + } + throw e; } - return namingStrategy.resolveColumnName(property.getName()) + UNDERSCORE + IndexedCollection.DEFAULT_INDEX_COLUMN_NAME; } - public String getMultiTenantFilterCondition(PersistentEntity referenced) { + public String getMultiTenantFilterCondition(GrailsHibernatePersistentEntity referenced) { return collectionSecondPassBinder.getMultiTenantFilterCondition(referenced); } -} + + +} \ No newline at end of file diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/CollectionSecondPassBinder.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/CollectionSecondPassBinder.java index 9d3268c7cf..bbe589b0ba 100644 --- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/CollectionSecondPassBinder.java +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/CollectionSecondPassBinder.java @@ -42,6 +42,10 @@ public class CollectionSecondPassBinder { this.namingStrategy = namingStrategy; } + public PersistentEntityNamingStrategy getNamingStrategy() { + return namingStrategy; + } + public void bindCollectionSecondPass(HibernateToManyProperty property, @Nonnull InFlightMetadataCollector mappings, java.util.Map<?, ?> persistentClasses, Collection collection, String sessionFactoryBeanName) { PersistentClass associatedClass = null; @@ -573,4 +577,8 @@ public class CollectionSecondPassBinder { return null; } } + + public boolean hasJoinTableColumnNameMapping(PropertyConfig pc) { + return pc != null && pc.getJoinTable() != null && pc.getJoinTable().getColumn() != null && pc.getJoinTable().getColumn().getName() != null; + } } diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/ListSecondPassBinder.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/ListSecondPassBinder.java index 08627e1410..f5e3aa3c21 100644 --- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/ListSecondPassBinder.java +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/ListSecondPassBinder.java @@ -30,19 +30,17 @@ import static org.grails.orm.hibernate.cfg.GrailsDomainBinder.UNDERSCORE; public class ListSecondPassBinder { private final MetadataBuildingContext metadataBuildingContext; - private final CollectionBinder collectionBinder; + private final CollectionSecondPassBinder collectionSecondPassBinder; - public ListSecondPassBinder(MetadataBuildingContext metadataBuildingContext, CollectionBinder collectionBinder) { + public ListSecondPassBinder(MetadataBuildingContext metadataBuildingContext, CollectionSecondPassBinder collectionSecondPassBinder) { this.metadataBuildingContext = metadataBuildingContext; - this.collectionBinder = collectionBinder; + this.collectionSecondPassBinder = collectionSecondPassBinder; } public void bindListSecondPass(HibernateToManyProperty property, @Nonnull InFlightMetadataCollector mappings, Map<?, ?> persistentClasses, org.hibernate.mapping.List list, String sessionFactoryBeanName) { - collectionBinder.bindCollectionSecondPass(property, mappings, persistentClasses, list, sessionFactoryBeanName); - - String columnName = collectionBinder.getIndexColumnName(property); + String columnName = property.getIndexColumnName(collectionSecondPassBinder.getNamingStrategy()); final boolean isManyToMany = property instanceof ManyToMany; if (isManyToMany && !property.isOwningSide()) { @@ -115,4 +113,4 @@ public class ListSecondPassBinder { } } } -} +} \ No newline at end of file diff --git a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/MapSecondPassBinder.java b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/MapSecondPassBinder.java index bf240de17a..bb2634ea67 100644 --- a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/MapSecondPassBinder.java +++ b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/domainbinding/MapSecondPassBinder.java @@ -30,22 +30,20 @@ import static org.grails.orm.hibernate.cfg.GrailsDomainBinder.UNDERSCORE; public class MapSecondPassBinder { private final MetadataBuildingContext metadataBuildingContext; private final PersistentEntityNamingStrategy namingStrategy; - private final CollectionBinder collectionBinder; + private final CollectionSecondPassBinder collectionSecondPassBinder; - public MapSecondPassBinder(MetadataBuildingContext metadataBuildingContext, PersistentEntityNamingStrategy namingStrategy, CollectionBinder collectionBinder) { + public MapSecondPassBinder(MetadataBuildingContext metadataBuildingContext, PersistentEntityNamingStrategy namingStrategy, CollectionSecondPassBinder collectionSecondPassBinder) { this.metadataBuildingContext = metadataBuildingContext; this.namingStrategy = namingStrategy; - this.collectionBinder = collectionBinder; + this.collectionSecondPassBinder = collectionSecondPassBinder; } public void bindMapSecondPass(HibernateToManyProperty property, @Nonnull InFlightMetadataCollector mappings, Map<?, ?> persistentClasses, org.hibernate.mapping.Map map, String sessionFactoryBeanName) { - collectionBinder.bindCollectionSecondPass(property, mappings, persistentClasses, map, sessionFactoryBeanName); - SimpleValue value = new BasicValue(metadataBuildingContext, map.getCollectionTable()); String type = ((GrailsHibernatePersistentProperty) property).getIndexColumnType("string"); - String columnName1 = collectionBinder.getIndexColumnName(property); + String columnName1 = property.getIndexColumnName(namingStrategy); new SimpleValueColumnBinder().bindSimpleValue(value, type, columnName1, true); PropertyConfig mappedForm = property.getMappedForm(); if (mappedForm.getIndexColumn() != null) { @@ -102,13 +100,9 @@ public class MapSecondPassBinder { private String getMapElementName(PersistentProperty property, String sessionFactoryBeanName) { PropertyConfig pc = property instanceof GrailsHibernatePersistentProperty ghpp ? ghpp.getMappedForm() : new PropertyConfig(); - if (hasJoinTableColumnNameMapping(pc)) { + if (collectionSecondPassBinder.hasJoinTableColumnNameMapping(pc)) { return pc.getJoinTable().getColumn().getName(); } return namingStrategy.resolveColumnName(property.getName()) + UNDERSCORE + IndexedCollection.DEFAULT_ELEMENT_COLUMN_NAME; } - - private boolean hasJoinTableColumnNameMapping(PropertyConfig pc) { - return pc != null && pc.getJoinTable() != null && pc.getJoinTable().getColumn() != null && pc.getJoinTable().getColumn().getName() != null; - } -} \ No newline at end of file +} 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 f092d07abf..ad3c79b427 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 @@ -52,7 +52,7 @@ public class GrailsCollectionSecondPass implements org.hibernate.boot.spi.Second - private void createCollectionKeys() { + protected void createCollectionKeys() { collection.createAllKeys(); if (GrailsDomainBinder.LOG.isDebugEnabled()) { 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 991098b224..39fe7708cd 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 @@ -11,21 +11,26 @@ import org.hibernate.mapping.Collection; import org.grails.orm.hibernate.cfg.GrailsDomainBinder; import org.grails.orm.hibernate.cfg.HibernateToManyProperty; import org.grails.orm.hibernate.cfg.domainbinding.CollectionBinder; +import org.grails.orm.hibernate.cfg.domainbinding.ListSecondPassBinder; public class ListSecondPass extends GrailsCollectionSecondPass { private static final long serialVersionUID = -3024674993774205193L; + private final ListSecondPassBinder listSecondPassBinder; - public ListSecondPass(GrailsDomainBinder grailsDomainBinder, CollectionBinder collectionBinder, HibernateToManyProperty property, @Nonnull InFlightMetadataCollector mappings, + public ListSecondPass(GrailsDomainBinder grailsDomainBinder, CollectionBinder collectionBinder, ListSecondPassBinder listSecondPassBinder, HibernateToManyProperty property, @Nonnull InFlightMetadataCollector mappings, Collection coll, String sessionFactoryBeanName) { super(grailsDomainBinder, collectionBinder, property, mappings, coll, sessionFactoryBeanName); + this.listSecondPassBinder = listSecondPassBinder; } @SuppressWarnings("rawtypes") @Override public void doSecondPass(Map persistentClasses) throws MappingException { - collectionBinder.bindListSecondPass(property, mappings, persistentClasses, + collectionBinder.bindCollectionSecondPass(property, mappings, persistentClasses, collection, sessionFactoryBeanName); + listSecondPassBinder.bindListSecondPass(property, mappings, persistentClasses, (org.hibernate.mapping.List) collection, sessionFactoryBeanName); + createCollectionKeys(); } } 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 49a5f5ecc0..d7d692be53 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 @@ -11,14 +11,17 @@ import org.hibernate.mapping.Collection; import org.grails.orm.hibernate.cfg.GrailsDomainBinder; import org.grails.orm.hibernate.cfg.HibernateToManyProperty; import org.grails.orm.hibernate.cfg.domainbinding.CollectionBinder; +import org.grails.orm.hibernate.cfg.domainbinding.MapSecondPassBinder; public class MapSecondPass extends GrailsCollectionSecondPass { private static final long serialVersionUID = -3244991685626409031L; + private final MapSecondPassBinder mapSecondPassBinder; - public MapSecondPass(GrailsDomainBinder grailsDomainBinder, CollectionBinder collectionBinder, HibernateToManyProperty property, @Nonnull InFlightMetadataCollector mappings, + public MapSecondPass(GrailsDomainBinder grailsDomainBinder, CollectionBinder collectionBinder, MapSecondPassBinder mapSecondPassBinder, HibernateToManyProperty property, @Nonnull InFlightMetadataCollector mappings, Collection coll, String sessionFactoryBeanName) { super(grailsDomainBinder, collectionBinder, property, mappings, coll, sessionFactoryBeanName); + this.mapSecondPassBinder = mapSecondPassBinder; } @@ -26,7 +29,9 @@ public class MapSecondPass extends GrailsCollectionSecondPass { @SuppressWarnings("rawtypes") @Override public void doSecondPass(Map persistentClasses) throws MappingException { - collectionBinder.bindMapSecondPass(property, mappings, persistentClasses, + collectionBinder.bindCollectionSecondPass(property, mappings, persistentClasses, collection, sessionFactoryBeanName); + mapSecondPassBinder.bindMapSecondPass(property, mappings, persistentClasses, (org.hibernate.mapping.Map) collection, sessionFactoryBeanName); + createCollectionKeys(); } } diff --git a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ListSecondPassBinderSpec.groovy b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ListSecondPassBinderSpec.groovy index 8f872682d4..d1ab83a687 100644 --- a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ListSecondPassBinderSpec.groovy +++ b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/ListSecondPassBinderSpec.groovy @@ -22,7 +22,8 @@ class ListSecondPassBinderSpec extends HibernateGormDatastoreSpec { def collector = getCollector() def binder = getGrailsDomainBinder() def collectionBinder = binder.getCollectionBinder() - def listSecondPassBinder = new ListSecondPassBinder(binder.getMetadataBuildingContext(), collectionBinder) + def collectionSecondPassBinder = new CollectionSecondPassBinder(binder.getMetadataBuildingContext(), binder.getNamingStrategy()) + def listSecondPassBinder = new ListSecondPassBinder(binder.getMetadataBuildingContext(), collectionSecondPassBinder) def authorEntity = getPersistentEntity(ListBinderAuthor) as GrailsHibernatePersistentEntity def bookEntity = getPersistentEntity(ListBinderBook) as GrailsHibernatePersistentEntity @@ -58,6 +59,7 @@ class ListSecondPassBinderSpec extends HibernateGormDatastoreSpec { ] when: + collectionSecondPassBinder.bindCollectionSecondPass(booksProp, collector, persistentClasses, list, "sessionFactory") listSecondPassBinder.bindListSecondPass(booksProp, collector, persistentClasses, list, "sessionFactory") collector.processSecondPasses(binder.getMetadataBuildingContext()) diff --git a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/MapSecondPassBinderSpec.groovy b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/MapSecondPassBinderSpec.groovy index 0999fa20fe..f3b0fedaaf 100644 --- a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/MapSecondPassBinderSpec.groovy +++ b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/MapSecondPassBinderSpec.groovy @@ -22,7 +22,8 @@ class MapSecondPassBinderSpec extends HibernateGormDatastoreSpec { def collector = getCollector() def binder = getGrailsDomainBinder() def collectionBinder = binder.getCollectionBinder() - def mapSecondPassBinder = new MapSecondPassBinder(binder.getMetadataBuildingContext(), binder.getNamingStrategy(), collectionBinder) + def collectionSecondPassBinder = new CollectionSecondPassBinder(binder.getMetadataBuildingContext(), binder.getNamingStrategy()) + def mapSecondPassBinder = new MapSecondPassBinder(binder.getMetadataBuildingContext(), binder.getNamingStrategy(), collectionSecondPassBinder) def authorEntity = getPersistentEntity(MapAuthorBinder) as GrailsHibernatePersistentEntity def bookEntity = getPersistentEntity(MapBookBinder) as GrailsHibernatePersistentEntity @@ -58,6 +59,7 @@ class MapSecondPassBinderSpec extends HibernateGormDatastoreSpec { ] when: + collectionSecondPassBinder.bindCollectionSecondPass(booksProp, collector, persistentClasses, map, "sessionFactory") mapSecondPassBinder.bindMapSecondPass(booksProp, collector, persistentClasses, map, "sessionFactory") collector.processSecondPasses(binder.getMetadataBuildingContext())
