{"record":{"id":"58a66527b6e7cb34","repo":"quarkusio/quarkus","slug":"this-persistenceprovider-does-not-support-createen","errorCode":null,"errorMessage":"This PersistenceProvider does not support createEntityManagerFactory(PersistenceConfiguration).  Quarkus is responsible for creating the entity manager factory, so inject your entity manager factory through CDI instead: `@Inject EntityManagerFactory emf`.","messagePattern":"This PersistenceProvider does not support createEntityManagerFactory\\(PersistenceConfiguration\\)\\.  Quarkus is responsible for creating the entity manager factory, so inject your entity manager factory through CDI instead: `@Inject EntityManagerFactory emf`\\.","errorType":"exception","errorClass":"PersistenceException","httpStatus":null,"severity":"error","filePath":"extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/FastBootHibernatePersistenceProvider.java","lineNumber":107,"sourceCode":"        if (builder == null) {\n            log.trace(\"Could not obtain matching EntityManagerFactoryBuilder, returning null\");\n            return null;\n        } else {\n            return builder.build();\n        }\n    }\n\n    @SuppressWarnings(\"rawtypes\")\n    @Override\n    public EntityManagerFactory createContainerEntityManagerFactory(PersistenceUnitInfo info, Map properties) {\n        log.tracef(\"Starting createContainerEntityManagerFactory : %s\", info.getPersistenceUnitName());\n\n        return getEntityManagerFactoryBuilder(info, properties).build();\n    }\n\n    @Override\n    public EntityManagerFactory createEntityManagerFactory(PersistenceConfiguration configuration) {\n        throw new PersistenceException(\n                \"This PersistenceProvider does not support createEntityManagerFactory(PersistenceConfiguration). \"\n                        + \" Quarkus is responsible for creating the entity manager factory, so inject your entity manager\"\n                        + \" factory through CDI instead: `@Inject EntityManagerFactory emf`.\");\n    }\n\n    @SuppressWarnings(\"rawtypes\")\n    @Override\n    public void generateSchema(PersistenceUnitInfo info, Map map) {\n        log.tracef(\"Starting generateSchema : PUI.name=%s\", info.getPersistenceUnitName());\n\n        final EntityManagerFactoryBuilder builder = getEntityManagerFactoryBuilder(info, map);\n        builder.generateSchema();\n    }\n\n    @SuppressWarnings(\"rawtypes\")\n    @Override\n    public boolean generateSchema(String persistenceUnitName, Map map) {\n        log.tracef(\"Starting generateSchema for persistenceUnitName %s\", persistenceUnitName);","sourceCodeStart":89,"sourceCodeEnd":125,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/hibernate-orm/runtime/src/main/java/io/quarkus/hibernate/orm/runtime/FastBootHibernatePersistenceProvider.java#L89-L125","documentation":"Quarkus replaces the standard JPA bootstrap with FastBootHibernatePersistenceProvider, which only supports creation from a PersistenceUnitInfo. The Jakarta Persistence programmatic PersistenceConfiguration overload is unsupported because Quarkus owns entity manager factory creation, so this method always throws PersistenceException pointing to CDI injection.","triggerScenarios":"Calling Persistence.createEntityManagerFactory(PersistenceConfiguration) in a Quarkus application; the provider resolves to FastBootHibernatePersistenceProvider and throws immediately.","commonSituations":"Porting plain Jakarta Persistence bootstrap code to Quarkus; tests building an EMF programmatically; following non-Quarkus documentation; migrating code that used a configuration builder for the EMF.","solutions":["Inject the factory via CDI: @Inject EntityManagerFactory emf, or @Inject EntityManager em / Session session directly.","Configure the persistence unit through application.properties (quarkus.hibernate-orm.*) instead of PersistenceConfiguration.","For multiple PUs, use qualified injection (@PersistenceUnit(\"name\") / @Inject @PersistenceUnitName(\"name\")).","Run plain-JPA integration tests outside the Quarkus runtime provider."],"exampleFix":"// before\nEntityManagerFactory emf = Persistence.createEntityManagerFactory(\n    new PersistenceConfiguration(\"mypu\").property(...));\n// after\n@Inject\nEntityManagerFactory emf; // or @Inject EntityManager em;","handlingStrategy":"type-guard","validationCode":"EntityManagerFactory emf;\ntry {\n    emf = CDI.current().select(EntityManagerFactory.class).get();\n} catch (NoSuchEJBException | IllegalStateException e) {\n    throw new IllegalStateException(\"EMF not available via CDI; do not use Persistence.createEntityManagerFactory(PersistenceConfiguration) in Quarkus\");\n}","typeGuard":"boolean isQuarkusRuntime() {\n    return Thread.currentThread().getContextClassLoader()\n        .getResource(\"io/quarkus/hibernate/orm/runtime/FastBootHibernatePersistenceProvider.class\") != null;\n}","tryCatchPattern":"try {\n    Persistence.createEntityManagerFactory(config);\n} catch (PersistenceException e) {\n    if (e.getMessage().contains(\"does not support createEntityManagerFactory\")) {\n        emf = CDI.current().select(EntityManagerFactory.class).get();\n    } else throw e;\n}","preventionTips":["Never call Persistence.createEntityManagerFactory(PersistenceConfiguration) inside Quarkus.","Inject EMF/EM via CDI annotations instead of programmatic bootstrap.","Configure PUs through quarkus.hibernate-orm.* properties."],"tags":["quarkus","hibernate-orm","jpa","unsupported-api","cdi"],"backgroundTag":"unsupported-persistence-bootstrap","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"}