Skip to content

Commit e80fea1

Browse files
issue-50138-hibernate-orm-named-qualifier
Consistently apply @nAmed and @PersistenceUnit qualifiers to Hibernate ORM beans Fixes #50138 Previously, the @nAmed and @PersistenceUnit qualifiers were added conditionally to Hibernate ORM beans. This change ensures that both qualifiers are always applied for every persistence unit, aligning the behavior with Hibernate Search and improving consistency and CDI injection reliability across the codebase. Tests are updated to confirm that beans are correctly qualified and injected for each persistence unit.
1 parent 31e401d commit e80fea1

File tree

2 files changed

+22
-4
lines changed

2 files changed

+22
-4
lines changed

extensions/hibernate-orm/deployment/src/main/java/io/quarkus/hibernate/orm/deployment/HibernateOrmCdiProcessor.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -374,10 +374,9 @@ private static <T> ExtendedBeanConfigurator createSyntheticBean(PersistenceUnitR
374374
if (defaultPuName || puRef.forceAllQualifiers) {
375375
configurator.addQualifier(Default.class);
376376
}
377-
if (!defaultPuName || puRef.forceAllQualifiers) {
378-
configurator.addQualifier().annotation(DotNames.NAMED).addValue("value", puRef.persistenceUnitName).done();
379-
configurator.addQualifier().annotation(PersistenceUnit.class).addValue("value", puRef.persistenceUnitName).done();
380-
}
377+
378+
configurator.addQualifier().annotation(DotNames.NAMED).addValue("value", puRef.persistenceUnitName).done();
379+
configurator.addQualifier().annotation(PersistenceUnit.class).addValue("value", puRef.persistenceUnitName).done();
381380

382381
return configurator;
383382
}

extensions/hibernate-orm/deployment/src/test/java/io/quarkus/hibernate/orm/multiplepersistenceunits/MultiplePersistenceUnitsCdiEntityManagerTest.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import jakarta.transaction.Transactional;
1414

1515
import org.hibernate.SessionFactory;
16+
import org.junit.jupiter.api.Assertions;
1617
import org.junit.jupiter.api.Test;
1718
import org.junit.jupiter.api.extension.RegisterExtension;
1819

@@ -167,4 +168,22 @@ public void testUserInInventoryEntityManager() {
167168
assertThatThrownBy(() -> inventoryEntityManager.persist(user)).isInstanceOf(IllegalArgumentException.class)
168169
.hasMessageContaining("Unknown entity type");
169170
}
171+
172+
@Test
173+
public void injectedEntityManagersAndSessionFactoriesAreProperlyQualified() {
174+
Assertions.assertNotNull(usersEntityManager,
175+
"@PersistenceUnit(\"users\") EntityManager should be injected and non-null");
176+
Assertions.assertNotNull(inventoryEntityManager,
177+
"@PersistenceUnit(\"inventory\") EntityManager should be injected and non-null");
178+
179+
Assertions.assertNotNull(usersFactory, "@Named(\"users\") SessionFactory should be injected and non-null");
180+
Assertions.assertNotNull(inventoryFactory, "@Named(\"inventory\") SessionFactory should be injected and non-null");
181+
}
182+
183+
@Test
184+
public void injectedDefaultEntityManagerAndSessionFactoryAreNonNull() {
185+
186+
Assertions.assertNotNull(defaultEntityManager, "Default EntityManager should be injected and non-null");
187+
Assertions.assertNotNull(defaultSessionFactory, "Default SessionFactory should be injected and non-null");
188+
}
170189
}

0 commit comments

Comments
 (0)