{"record":{"id":"78817bd4aa78aa4e","repo":"hibernate/hibernate-orm","slug":"credentials-based-multitenancy-not-supported-with","errorCode":null,"errorMessage":"Credentials-based multitenancy not supported with read-only replicas","messagePattern":"Credentials-based multitenancy not supported with read-only replicas","errorType":"exception","errorClass":"HibernateException","httpStatus":null,"severity":"error","filePath":"hibernate-core/src/main/java/org/hibernate/internal/NonContextualJdbcConnectionAccess.java","lineNumber":52,"sourceCode":"\t\tObjects.requireNonNull( connectionProvider );\n\t\tthis.readOnly = readOnly;\n\t\tthis.listener = listener;\n\t\tthis.connectionProvider = connectionProvider;\n\t\tthis.session = session;\n\t}\n\n\t@Override\n\tpublic Connection obtainConnection() throws SQLException {\n\t\tfinal var eventMonitor = session.getEventMonitor();\n\t\tfinal var connectionAcquisitionEvent = eventMonitor.beginJdbcConnectionAcquisitionEvent();\n\t\ttry {\n\t\t\tlistener.jdbcConnectionAcquisitionStart();\n\t\t\tfinal Object tenantIdentifier = session.getTenantIdentifierValue();\n\t\t\tif ( tenantIdentifier != null ) {\n\t\t\t\tfinal var tenantCredentialsMapper = getTenantCredentialsMapper();\n\t\t\t\tif ( tenantCredentialsMapper != null ) {\n\t\t\t\t\tif ( readOnly ) {\n\t\t\t\t\t\tthrow new HibernateException( \"Credentials-based multitenancy not supported with read-only replicas\" );\n\t\t\t\t\t}\n\t\t\t\t\treturn connectionProvider.getConnection(\n\t\t\t\t\t\t\ttenantCredentialsMapper.user( tenantIdentifier ),\n\t\t\t\t\t\t\ttenantCredentialsMapper.password( tenantIdentifier )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn readOnly\n\t\t\t\t\t? connectionProvider.getReadOnlyConnection()\n\t\t\t\t\t: connectionProvider.getConnection();\n\t\t}\n\t\tfinally {\n\t\t\teventMonitor.completeJdbcConnectionAcquisitionEvent( connectionAcquisitionEvent, session, null );\n\t\t\tlistener.jdbcConnectionAcquisitionEnd();\n\t\t}\n\t}\n\n\tprivate TenantCredentialsMapper<Object> getTenantCredentialsMapper() {","sourceCodeStart":34,"sourceCodeEnd":70,"githubUrl":"https://github.com/hibernate/hibernate-orm/blob/fad1729dce015f908198d57a8d80274a30f905a5/hibernate-core/src/main/java/org/hibernate/internal/NonContextualJdbcConnectionAccess.java#L34-L70","documentation":"Error \"Credentials-based multitenancy not supported with read-only replicas\" thrown in hibernate/hibernate-orm.","triggerScenarios":"Thrown when credentials-based multi-tenancy is combined with read-only replica configuration, which is unsupported.","commonSituations":"Typical situations: enabling both tenant-credentials connection access and read-only replica routing in the SessionFactory settings.","solutions":["Do not combine credentials-based multitenancy with read-only replica routing; use one approach or configure separate connection providers."],"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"}