{"record":{"id":"4e59ea583ac51028","repo":"quarkusio/quarkus","slug":"persistence-unit-quarkus-security-jpa-persisten","errorCode":null,"errorMessage":"Persistence unit '${quarkus.security-jpa.persistence-unit-name value}' specified with the 'quarkus.security-jpa.persistence-unit-name' configuration property does not exist. Please set valid persistence unit name.","messagePattern":"Persistence unit '(.+?)' specified with the 'quarkus\\.security-jpa\\.persistence-unit-name' configuration property does not exist\\. Please set valid persistence unit name\\.","errorType":"validation","errorClass":"ConfigurationException","httpStatus":null,"severity":"error","filePath":"extensions/security-jpa/deployment/src/main/java/io/quarkus/security/jpa/deployment/QuarkusSecurityJpaProcessor.java","lineNumber":275,"sourceCode":"        }\n    }\n\n    private static void activateCDIRequestContext(ClassCreator cc) {\n        cc.method(\"requireActiveCDIRequestContext\", mc -> {\n            mc.protected_();\n            mc.returning(boolean.class);\n            mc.body(bc -> {\n                bc.return_(true);\n            });\n        });\n    }\n\n    private static boolean shouldActivateCDIReqCtx(List<PersistenceUnitDescriptorBuildItem> puDescriptors,\n            SecurityJpaBuildTimeConfig secJpaConfig) {\n        var descriptor = puDescriptors.stream()\n                .filter(desc -> secJpaConfig.persistenceUnitName().equals(desc.getPersistenceUnitName())).findFirst();\n        if (descriptor.isEmpty()) {\n            throw new ConfigurationException(\"Persistence unit '\" + secJpaConfig.persistenceUnitName()\n                    + \"' specified with the 'quarkus.security-jpa.persistence-unit-name' configuration property\"\n                    + \" does not exist. Please set valid persistence unit name.\");\n        }\n        // 'io.quarkus.hibernate.orm.runtime.tenant.TenantResolver' is only resolved when CDI request context is active\n        // we need to active request context even when TenantResolver is @ApplicationScoped for tenant to be set\n        // see io.quarkus.hibernate.orm.runtime.tenant.HibernateCurrentTenantIdentifierResolver.resolveCurrentTenantIdentifier\n        // for more information\n        return descriptor.get().getConfig().getMultiTenancyStrategy() != MultiTenancyStrategy.NONE;\n    }\n\n    static final class EnabledIfNonDefaultPersistenceUnit implements BooleanSupplier {\n\n        private final boolean useNonDefaultPersistenceUnit;\n\n        public EnabledIfNonDefaultPersistenceUnit(SecurityJpaBuildTimeConfig config) {\n            this.useNonDefaultPersistenceUnit = !DEFAULT_PERSISTENCE_UNIT_NAME.equals(config.persistenceUnitName());\n        }\n","sourceCodeStart":257,"sourceCodeEnd":293,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/security-jpa/deployment/src/main/java/io/quarkus/security/jpa/deployment/QuarkusSecurityJpaProcessor.java#L257-L293","documentation":"At build time the security-jpa extension validates that the persistence unit named by quarkus.security-jpa.persistence-unit-name exists among the Hibernate ORM persistence unit descriptors. If no descriptor matches, it throws ConfigurationException because the JPA identity store cannot be wired without a valid persistence unit.","triggerScenarios":"Setting quarkus.security-jpa.persistence-unit-name to a name that does not match any persistence unit defined in the application (or configuring a custom name while no persistence units are defined).","commonSituations":"Typo in the persistence unit name; renaming a persistence unit in hibernate config without updating security-jpa config; multiple datasources where the security PU was removed; forgetting the hibernate-orm dependency so no PUs are registered.","solutions":["Set quarkus.security-jpa.persistence-unit-name to the exact name of an existing persistence unit (check quarkus.hibernate.orm.persistence-unit.<name> config or the default unnamed PU).","Remove the property to use the default persistence unit if only one exists.","Define the missing persistence unit in quarkus.hibernate.orm.persistence-unit.<name>.* properties.","Verify the hibernate-orm extension and datasource are properly configured."],"exampleFix":"# before\nquarkus.security-jpa.persistence-unit-name=userPU   # no such PU\n\n# after\nquarkus.security-jpa.persistence-unit-name=users\nquarkus.hibernate.orm.persistence-unit.users.datasource=users-ds","handlingStrategy":"validation","validationCode":"String puName = config.securityJpaPersistenceUnitName();\nboolean exists = puName == null || allConfiguredPersistenceUnits().contains(puName);\nif (!exists) throw new IllegalStateException(\"Unknown PU: \" + puName);","typeGuard":null,"tryCatchPattern":"try { quarkusBuild(); } catch (ConfigurationException e) { /* fix quarkus.security-jpa.persistence-unit-name */ }","preventionTips":["Copy the PU name exactly from quarkus.hibernate.orm.persistence-unit.<name> config","Remove the property to use the default PU when only one exists","Ensure the hibernate-orm extension is present so PUs are registered"],"tags":["security","jpa","configuration","persistence-unit","build-time"],"backgroundTag":"persistence-unit-not-found","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}