This is an automated email from the ASF dual-hosted git repository.

borinquenkid pushed a commit to branch 8.0.x-hibernate7-dev
in repository https://gitbox.apache.org/repos/asf/grails-core.git

commit dace1829201ecb7b1f9cdeefabe3e0f4ff6b11f1
Author: Walter Duque de Estrada <[email protected]>
AuthorDate: Thu Mar 5 22:13:18 2026 -0600

    hibernate7: cleanup update MapSecondPassBinderSpec
---
 .../cfg/HibernateMappingContextConfiguration.java  | 38 ++++++++++++++--------
 .../secondpass/MapSecondPassBinderSpec.groovy      | 26 +++++++++++++--
 2 files changed, 48 insertions(+), 16 deletions(-)

diff --git 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateMappingContextConfiguration.java
 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateMappingContextConfiguration.java
index 12011f907c..ae84343985 100644
--- 
a/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateMappingContextConfiguration.java
+++ 
b/grails-data-hibernate7/core/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateMappingContextConfiguration.java
@@ -18,10 +18,13 @@
  */
 package org.grails.orm.hibernate.cfg;
 
+import jakarta.annotation.Nullable;
 import jakarta.persistence.Embeddable;
 import jakarta.persistence.Entity;
 import jakarta.persistence.MappedSuperclass;
 import java.io.IOException;
+import java.io.Serial;
+import java.io.Serializable;
 import java.util.*;
 import javax.sql.DataSource;
 import org.grails.datastore.gorm.GormEntity;
@@ -78,7 +81,8 @@ import org.springframework.util.ClassUtils;
   "PMD.CloseResource"
 })
 public class HibernateMappingContextConfiguration extends Configuration
-    implements ApplicationContextAware {
+        implements ApplicationContextAware, Serializable {
+  @Serial
   private static final long serialVersionUID = -7115087342689305517L;
 
   private static final String RESOURCE_PATTERN = "/**/*.class";
@@ -93,21 +97,21 @@ public class HibernateMappingContextConfiguration extends 
Configuration
   protected String sessionFactoryBeanName = "sessionFactory";
   protected String dataSourceName = ConnectionSource.DEFAULT;
   protected HibernateMappingContext hibernateMappingContext;
-  private Class<? extends CurrentSessionContext> currentSessionContext = 
GrailsSessionContext.class;
+  private final Class<? extends CurrentSessionContext> currentSessionContext = 
GrailsSessionContext.class;
   private HibernateEventListeners hibernateEventListeners;
   private Map<String, Object> eventListeners;
   private ServiceRegistry serviceRegistry;
   private ResourcePatternResolver resourcePatternResolver =
       new PathMatchingResourcePatternResolver();
   //    private MetadataContributor metadataContributor;
-  private Set<Class> additionalClasses = new HashSet<>();
+  private final Set<Class> additionalClasses = new HashSet<>();
 
   public void setHibernateMappingContext(HibernateMappingContext 
hibernateMappingContext) {
     this.hibernateMappingContext = hibernateMappingContext;
   }
 
   @Override
-  public void setApplicationContext(ApplicationContext applicationContext) 
throws BeansException {
+  public void setApplicationContext(@Nullable ApplicationContext 
applicationContext) throws BeansException {
     resourcePatternResolver = 
ResourcePatternUtils.getResourcePatternResolver(applicationContext);
     String dsName =
         ConnectionSource.DEFAULT.equals(dataSourceName)
@@ -115,11 +119,16 @@ public class HibernateMappingContextConfiguration extends 
Configuration
             : "dataSource_" + dataSourceName;
     Properties properties = getProperties();
 
-    if (applicationContext.containsBean(dsName)) {
-      properties.put(JdbcSettings.JAKARTA_NON_JTA_DATASOURCE, 
applicationContext.getBean(dsName));
+    if (applicationContext != null) {
+      if (applicationContext.containsBean(dsName)) {
+        properties.put(JdbcSettings.JAKARTA_NON_JTA_DATASOURCE, 
applicationContext.getBean(dsName));
+      }
+      properties.put(Environment.CURRENT_SESSION_CONTEXT_CLASS, 
currentSessionContext.getName());
+      ClassLoader classLoader = applicationContext.getClassLoader();
+      if (classLoader != null) {
+        properties.put(AvailableSettings.CLASSLOADERS, classLoader);
+      }
     }
-    properties.put(Environment.CURRENT_SESSION_CONTEXT_CLASS, 
currentSessionContext.getName());
-    properties.put(AvailableSettings.CLASSLOADERS, 
applicationContext.getClassLoader());
   }
 
   /**
@@ -200,7 +209,11 @@ public class HibernateMappingContextConfiguration extends 
Configuration
             MetadataReader reader = readerFactory.getMetadataReader(resource);
             String className = reader.getClassMetadata().getClassName();
             if (matchesFilter(reader, readerFactory)) {
-              Class<?> loadedClass = 
resourcePatternResolver.getClassLoader().loadClass(className);
+              ClassLoader classLoader = 
resourcePatternResolver.getClassLoader();
+              Class<?> loadedClass =
+                  classLoader != null
+                      ? classLoader.loadClass(className)
+                      : ClassUtils.forName(className, null);
               addAnnotatedClasses(loadedClass);
             }
           }
@@ -276,7 +289,7 @@ public class HibernateMappingContextConfiguration extends 
Configuration
       }
     }
 
-    addAnnotatedClasses(annotatedClasses.toArray(new 
Class[annotatedClasses.size()]));
+    addAnnotatedClasses(annotatedClasses.toArray(new Class[0]));
 
     ClassLoaderService classLoaderService =
         new ClassLoaderServiceImpl(appClassLoader) {
@@ -302,11 +315,10 @@ public class HibernateMappingContextConfiguration extends 
Configuration
 
     SessionFactoryObserver sessionFactoryObserver =
         new SessionFactoryObserver() {
+          @Serial
           private static final long serialVersionUID = 1;
 
-          public void sessionFactoryCreated(SessionFactory factory) {}
-
-          public void sessionFactoryClosed(SessionFactory factory) {
+            public void sessionFactoryClosed(SessionFactory factory) {
             if (serviceRegistry != null) {
               ((ServiceRegistryImplementor) serviceRegistry).destroy();
             }
diff --git 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/MapSecondPassBinderSpec.groovy
 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/MapSecondPassBinderSpec.groovy
index 17c37ff7d5..6df8a1aa53 100644
--- 
a/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/MapSecondPassBinderSpec.groovy
+++ 
b/grails-data-hibernate7/core/src/test/groovy/org/grails/orm/hibernate/cfg/domainbinding/secondpass/MapSecondPassBinderSpec.groovy
@@ -172,19 +172,34 @@ class MapSecondPassBinderSpec extends 
HibernateGormDatastoreSpec {
         def mapBinder = collectionBinder.mapSecondPassBinder
 
         def authorEntity = getPersistentEntity(MSBAuthor) as 
GrailsHibernatePersistentEntity
+        def bookEntity = getPersistentEntity(MSBBook) as 
GrailsHibernatePersistentEntity
         def booksProp = authorEntity.getPropertyByName("books") as 
HibernateToManyProperty
 
         def rootClass = new RootClass(metadataBuildingContext)
         rootClass.setEntityName(authorEntity.name)
+        rootClass.setClassName(authorEntity.name)
+        rootClass.setJpaEntityName(authorEntity.name)
         rootClass.setTable(collector.addTable(null, null, "MSB_AUTHOR", null, 
false, metadataBuildingContext))
         collector.addEntityBinding(rootClass)
 
+        def bookRootClass = new RootClass(metadataBuildingContext)
+        bookRootClass.setEntityName(bookEntity.name)
+        bookRootClass.setClassName(bookEntity.name)
+        bookRootClass.setJpaEntityName(bookEntity.name)
+        bookRootClass.setTable(collector.addTable(null, null, "MSB_BOOK", 
null, false, metadataBuildingContext))
+        collector.addEntityBinding(bookRootClass)
+
+        def persistentClasses = [
+            (authorEntity.name): rootClass,
+            (bookEntity.name): bookRootClass
+        ]
+
         def map = new org.hibernate.mapping.Map(metadataBuildingContext, 
rootClass)
         map.setRole("${authorEntity.name}.books".toString())
         map.setCollectionTable(rootClass.getTable())
 
         when:
-        mapBinder.bindMapSecondPass(booksProp, collector, [:], map)
+        mapBinder.bindMapSecondPass(booksProp, collector, persistentClasses, 
map)
 
         then:
         noExceptionThrown()
@@ -205,15 +220,20 @@ class MapSecondPassBinderSpec extends 
HibernateGormDatastoreSpec {
         def mapBinder = collectionBinder.mapSecondPassBinder
 
         def authorEntity = getPersistentEntity(MSBAuthor) as 
GrailsHibernatePersistentEntity
+        def bookEntity = getPersistentEntity(MSBBook) as 
GrailsHibernatePersistentEntity
         def booksProp = authorEntity.getPropertyByName("books") as 
HibernateToManyProperty
 
         def rootClass = new RootClass(metadataBuildingContext)
         rootClass.setEntityName(authorEntity.name)
+        rootClass.setClassName(authorEntity.name)
+        rootClass.setJpaEntityName(authorEntity.name)
         rootClass.setTable(collector.addTable(null, null, "MSB_AUTHOR", null, 
false, metadataBuildingContext))
         collector.addEntityBinding(rootClass)
 
         def bookRootClass = new RootClass(metadataBuildingContext)
-        bookRootClass.setEntityName(MSBBook.name)
+        bookRootClass.setEntityName(bookEntity.name)
+        bookRootClass.setClassName(bookEntity.name)
+        bookRootClass.setJpaEntityName(bookEntity.name)
         bookRootClass.setTable(collector.addTable(null, null, "MSB_BOOK", 
null, false, metadataBuildingContext))
         collector.addEntityBinding(bookRootClass)
 
@@ -237,7 +257,7 @@ class MapSecondPassBinderSpec extends 
HibernateGormDatastoreSpec {
         noExceptionThrown()
         map.index != null
         map.index.isTypeSpecified()
-        map.index.getColumnIterator().next().name == "BOOK_TITLE"
+        map.index.getColumns()[0].name == "books_idx"
     }
 }
 

Reply via email to