{"record":{"id":"fdfa37a7ca190804","repo":"quarkusio/quarkus","slug":"no-name-provided-and-multiple-persistence-units-fo","errorCode":null,"errorMessage":"No name provided and multiple persistence units found","messagePattern":"No name provided and multiple persistence units found","errorType":"exception","errorClass":"PersistenceException","httpStatus":null,"severity":"error","filePath":"extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/FastBootHibernatePersistenceProvider.java","lineNumber":181,"sourceCode":"        log.tracef(\"Attempting to obtain correct EntityManagerFactoryBuilder for persistenceUnitName : %s\",\n                persistenceUnitName);\n\n        verifyProperties(properties);\n\n        // These are pre-parsed during image generation:\n        // Avoid processing the reactive descriptors\n        final List<QuarkusPersistenceUnitDescriptor> units = PersistenceUnitsHolder\n                .getPersistenceUnitDescriptors()\n                .stream()\n                .filter(d -> !d.isReactive())\n                .toList();\n\n        log.debugf(\"Located %s persistence units; checking each\", units.size());\n\n        if (persistenceUnitName == null && units.size() > 1) {\n            // no persistence-unit name to look for was given and we found multiple\n            // persistence-units\n            throw new PersistenceException(\"No name provided and multiple persistence units found\");\n        }\n\n        for (QuarkusPersistenceUnitDescriptor persistenceUnit : units) {\n            log.debugf(\n                    \"Checking persistence-unit [name=%s, explicit-provider=%s] against incoming persistence unit name [%s]\",\n                    persistenceUnit.getName(), persistenceUnit.getProviderClassName(), persistenceUnitName);\n\n            final boolean matches = persistenceUnitName == null\n                    || persistenceUnit.getName().equals(persistenceUnitName);\n            if (!matches) {\n                log.debugf(\"Excluding from consideration '%s' due to name mismatch\", persistenceUnit.getName());\n                continue;\n            }\n\n            // See if we (Hibernate) are the persistence provider\n            if (!isProvider(persistenceUnit)) {\n                log.debug(\"Excluding from consideration due to provider mismatch\");\n                continue;","sourceCodeStart":163,"sourceCodeEnd":199,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/FastBootHibernatePersistenceProvider.java#L163-L199","documentation":"With no persistence unit name supplied and multiple persistence units present, FastBootHibernatePersistenceProvider cannot decide which factory to build, so getEntityManagerFactoryBuilderOrNull throws PersistenceException(\"No name provided and multiple persistence units found\"). Quarkus requires explicit disambiguation in multi-PU applications.","triggerScenarios":"getEntityManagerFactoryBuilderOrNull is invoked (via builder or getEntityManagerFactoryBuilder, e.g. name-less Persistence.createEntityManagerFactory) with persistenceUnitName == null while 2+ QuarkusPersistenceUnitDescriptors exist.","commonSituations":"Multiple persistence.xml <persistence-unit> entries or quarkus.hibernate-orm.\"name\" configs; legacy libraries assuming a single default PU; tests booting an unnamed EMF.","solutions":["Pass the explicit persistence unit name to the API call.","Use CDI-qualified injection (@PersistenceUnit(\"myPu\")) instead of name-less lookups.","Remove extra persistence unit definitions if only one is actually needed."],"exampleFix":"// before\nEntityManagerFactory emf = Persistence.createEntityManagerFactory(null);\n// after\nEntityManagerFactory emf = Persistence.createEntityManagerFactory(\"customers\");","handlingStrategy":"validation","validationCode":"Set<String> puNames = PersistenceUnits.list(); // or count <persistence-unit> entries\nif (puNames.size() > 1 && requestedName == null) {\n    throw new IllegalArgumentException(\"PU name required; units: \" + puNames);\n}","typeGuard":null,"tryCatchPattern":"try {\n    Persistence.createEntityManagerFactory(name);\n} catch (PersistenceException e) {\n    if (e.getMessage().contains(\"No name provided and multiple persistence units\")) {\n        throw new IllegalStateException(\"Specify a PU name: \" + e.getMessage(), e);\n    } else throw e;\n}","preventionTips":["Always pass an explicit PU name when the app defines more than one unit.","Use CDI-qualified injection rather than name-less lookups.","Document PU names for teams working with multi-PU apps."],"tags":["quarkus","hibernate-orm","persistence-unit","ambiguity"],"backgroundTag":"ambiguous-persistence-unit","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}