{"record":{"id":"4d307a4afbf4f988","repo":"hibernate/hibernate-orm","slug":"cannot-serialize-while-connected","errorCode":null,"errorMessage":"Cannot serialize {} [{}] while connected","messagePattern":"Cannot serialize (.+?) \\[(.+?)\\] while connected","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"hibernate-core/src/main/java/org/hibernate/internal/AbstractSharedSessionContract.java","lineNumber":2588,"sourceCode":"\t\t\tsessionAssociationMarkers = new SessionAssociationMarkers( this );\n\t\t}\n\t\treturn sessionAssociationMarkers;\n\t}\n\n\t@Override\n\tpublic <E extends Extension> E getExtension(Class<E> extension) {\n\t\treturn extension.cast( extensions.get( extension ) );\n\t}\n\n\t@Serial\n\tprivate void writeObject(ObjectOutputStream oos) throws IOException {\n\t\tSESSION_LOGGER.serializingSession( getSessionIdentifier() );\n\n\n\t\tif ( !jdbcCoordinator.isReadyForSerialization() ) {\n\t\t\t// throw a more specific (helpful) exception message when this happens from Session,\n\t\t\t//\t\tas opposed to more generic exception from jdbcCoordinator#serialize call later\n\t\t\tthrow new IllegalStateException( \"Cannot serialize \" + getClass().getSimpleName() + \" [\" + getSessionIdentifier() + \"] while connected\" );\n\t\t}\n\n\t\tif ( isTransactionCoordinatorShared ) {\n\t\t\tthrow new IllegalStateException( \"Cannot serialize \" + getClass().getSimpleName() + \" [\" + getSessionIdentifier() + \"] as it has a shared TransactionCoordinator\" );\n\t\t}\n\n\t\t// todo : (5.2) come back and review serialization plan...\n\t\t//\t\tthis was done quickly during initial HEM consolidation into CORE and is likely not perfect :)\n\t\t//\n\t\t//\t\tbe sure to review state fields in terms of transient modifiers\n\n\t\t// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\t\t// Step 1 :: write non-transient state...\n\t\toos.defaultWriteObject();\n\n\t\t// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\t\t// Step 2 :: write transient state...\n\t\t// \t\t-- see concurrent access discussion","sourceCodeStart":2570,"sourceCodeEnd":2606,"githubUrl":"https://github.com/hibernate/hibernate-orm/blob/fad1729dce015f908198d57a8d80274a30f905a5/hibernate-core/src/main/java/org/hibernate/internal/AbstractSharedSessionContract.java#L2570-L2606","documentation":"Error \"Cannot serialize {} [{}] while connected\" thrown in hibernate/hibernate-orm.","triggerScenarios":"Thrown when a Session/EntityManager that cannot be safely serialized is serialized.","commonSituations":"Typical situations: serializing a session while it holds a JDBC connection or a shared TransactionCoordinator; putting a live session in an HTTP session.","solutions":["Disconnect (close) the session before serializing it, or avoid serializing connected sessions."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"fad1729dce015f908198d57a8d80274a30f905a5","analyzedAt":"2026-08-22T04:13:57.527Z","schemaVersion":2},"datasetVersion":"2026-08-22T09:17:25.309Z"}