From 964dae7da409b2a23ceb732efc631a5fae0ed9dc Mon Sep 17 00:00:00 2001 From: Andrea Boriero Date: Tue, 28 Jan 2025 16:07:00 +0100 Subject: [PATCH 1/2] HHH-19072 Add test for issue --- .../SessionFactoryNameSettingTest.java | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 hibernate-core/src/test/java/org/hibernate/orm/test/internal/SessionFactoryNameSettingTest.java diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/internal/SessionFactoryNameSettingTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/internal/SessionFactoryNameSettingTest.java new file mode 100644 index 000000000000..03aea2aa0fff --- /dev/null +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/internal/SessionFactoryNameSettingTest.java @@ -0,0 +1,37 @@ +/* + * SPDX-License-Identifier: LGPL-2.1-or-later + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.orm.test.internal; + +import org.assertj.core.api.Assertions; +import org.hibernate.SessionFactory; +import org.hibernate.cfg.AvailableSettings; +import org.hibernate.testing.orm.junit.EntityManagerFactoryScope; +import org.hibernate.testing.orm.junit.JiraKey; +import org.hibernate.testing.orm.junit.Jpa; +import org.hibernate.testing.orm.junit.Setting; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; +import static org.hibernate.orm.test.internal.SessionFactoryNameSettingTest.SESSION_FACTORY_NAME; + +@Jpa( + integrationSettings = @Setting(name = AvailableSettings.SESSION_FACTORY_NAME, value = SESSION_FACTORY_NAME) +) +@JiraKey("HHH-19072") +public class SessionFactoryNameSettingTest { + public static final String SESSION_FACTORY_NAME = "TEST_SESSION_FACTORY"; + + @Test + public void testSessionFactoryNameSettingInfluencingSessionFactoryName(EntityManagerFactoryScope scope) { + assertThat( scope.getEntityManagerFactory().unwrap( SessionFactory.class ).getName() ) + .isEqualTo( SESSION_FACTORY_NAME ); + } + + @Test + public void testSessionFactoryNameSettingInfluencingSessionFactoryJndiName(EntityManagerFactoryScope scope) { + Assertions.assertThat( scope.getEntityManagerFactory().unwrap( SessionFactory.class ).getJndiName() ) + .isEqualTo( SESSION_FACTORY_NAME ); + } +} From 6443666540da95299db0cf97c73b553fd86ba763 Mon Sep 17 00:00:00 2001 From: Andrea Boriero Date: Tue, 28 Jan 2025 15:04:35 +0100 Subject: [PATCH 2/2] HHH-19072 The hibernate.session_factory_name configuration property no longer works in Hibernate 7.0.0 --- .../java/org/hibernate/internal/SessionFactorySettings.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hibernate-core/src/main/java/org/hibernate/internal/SessionFactorySettings.java b/hibernate-core/src/main/java/org/hibernate/internal/SessionFactorySettings.java index dc57a4592015..cbe59510a8f8 100644 --- a/hibernate-core/src/main/java/org/hibernate/internal/SessionFactorySettings.java +++ b/hibernate-core/src/main/java/org/hibernate/internal/SessionFactorySettings.java @@ -19,6 +19,7 @@ import static org.hibernate.cfg.PersistenceSettings.PERSISTENCE_UNIT_NAME; import static org.hibernate.cfg.PersistenceSettings.SESSION_FACTORY_JNDI_NAME; +import static org.hibernate.cfg.PersistenceSettings.SESSION_FACTORY_NAME; import static org.hibernate.cfg.ValidationSettings.JAKARTA_VALIDATION_FACTORY; import static org.hibernate.cfg.ValidationSettings.JPA_VALIDATION_FACTORY; import static org.hibernate.engine.config.spi.StandardConverters.STRING; @@ -95,6 +96,10 @@ static String determineJndiName( return explicitJndiName; } else { + final String expliciSessionFactoryname = configService.getSetting( SESSION_FACTORY_NAME, STRING ); + if ( isNotEmpty( expliciSessionFactoryname ) ) { + return expliciSessionFactoryname; + } final String unitName = configService.getSetting( PERSISTENCE_UNIT_NAME, STRING ); // do not use name for JNDI if explicitly asked not to or if name comes from JPA persistence-unit name final boolean nameIsNotJndiName =