{"record":{"id":"81245019300af112","repo":"quarkusio/quarkus","slug":"managed-operations-not-supported-812450","errorCode":null,"errorMessage":"Managed operations not supported","messagePattern":"Managed operations not supported","errorType":"exception","errorClass":"UnsupportedOperationException","httpStatus":null,"severity":"error","filePath":"extensions/data/hibernate/runtime/src/main/java/io/quarkus/data/hibernate/runtime/orm/StatelessBlockingOperations.java","lineNumber":27,"sourceCode":"\nimport org.hibernate.Session;\nimport org.hibernate.StatelessSession;\n\nimport io.quarkus.data.hibernate.blocking.BlockingDataQuery;\nimport io.quarkus.data.hibernate.runtime.spi.PanacheBlockingOperations;\n\npublic class StatelessBlockingOperations implements PanacheBlockingOperations {\n\n    public final static StatelessBlockingOperations INSTANCE = new StatelessBlockingOperations();\n    private final static StatelessBlockingJpaOperations DELEGATE = new StatelessBlockingJpaOperations();\n\n    private StatelessBlockingOperations() {\n    }\n\n    @Override\n    public Session getSession(Class<?> entityClass) {\n        // FIXME: this is wrong\n        throw new UnsupportedOperationException(\"Managed operations not supported\");\n    }\n\n    @Override\n    public StatelessSession getStatelessSession(Class<?> entityClass) {\n        return DELEGATE.getSession(entityClass);\n    }\n\n    @Override\n    public Void insert(Object entity) {\n        DELEGATE.insert(entity);\n        return null;\n    }\n\n    @Override\n    public Void persist(Object entity) {\n        throw new UnsupportedOperationException(\"Managed operations not supported\");\n    }\n","sourceCodeStart":9,"sourceCodeEnd":45,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/data/hibernate/runtime/src/main/java/io/quarkus/data/hibernate/runtime/orm/StatelessBlockingOperations.java#L9-L45","documentation":"StatelessBlockingOperations backs operations with a StatelessSession, so there is no managed Session to return; getSession(Class) is intentionally unsupported (the source even carries a FIXME noting this is wrong). It always throws UnsupportedOperationException.","triggerScenarios":"Calling getSession(entityClass) on an operations instance resolved in stateless mode (stateless persistence unit / repository configured for StatelessSession).","commonSituations":"Code that mixes managed Session APIs (queries, merge, refresh) with a repository wired to stateless sessions; framework internals resolving a session generically.","solutions":["Use getStatelessSession(entityClass) instead, which the stateless implementation does support","Inject the managed Session/EntityManager separately via CDI when managed semantics are needed","Reconfigure that repository/persistence unit to managed mode if managed Session access is a hard requirement"],"exampleFix":"// before\nSession s = operations.getSession(MyEntity.class);\n// after\nStatelessSession ss = operations.getStatelessSession(MyEntity.class);","handlingStrategy":"type-guard","validationCode":"Class<? extends BlockingDataOperations<?>> opsClass = operations.getClass();\nif (opsClass == StatelessBlockingOperations.class) {\n    // use getStatelessSession instead of getSession\n}","typeGuard":"boolean isStatelessOps(Object ops) {\n    return ops instanceof StatelessBlockingOperations;\n}","tryCatchPattern":"try {\n    Session s = operations.getSession(entityClass);\n} catch (UnsupportedOperationException e) {\n    StatelessSession ss = operations.getStatelessSession(entityClass);\n}","preventionTips":["Inject Session/StatelessSession directly via CDI instead of deriving one from operations","Keep managed and stateless code paths in separate repository classes","Search code for getSession() calls when enabling stateless mode"],"tags":["hibernate","stateless-session","session","unsupported-operation"],"backgroundTag":"stateless-session-unsupported-operation","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"}