{"record":{"id":"8ab5a9b1e73c5eca","repo":"hibernate/hibernate-orm","slug":"unable-to-instantiate-specified-multi-tenant-conne","errorCode":null,"errorMessage":"Unable to instantiate specified multi-tenant connection provider [{}]","messagePattern":"Unable to instantiate specified multi-tenant connection provider \\[(.+?)\\]","errorType":"exception","errorClass":"ServiceException","httpStatus":null,"severity":"error","filePath":"hibernate-core/src/main/java/org/hibernate/engine/jdbc/connections/internal/MultiTenantConnectionProviderInitiator.java","lineNumber":72,"sourceCode":"\t\tfinal Object configValue = configurationValues.get( MULTI_TENANT_CONNECTION_PROVIDER );\n\t\tif ( configValue == null ) {\n\t\t\t// if they also specified the data source *name*, then let's assume they want\n\t\t\t// DataSourceBasedMultiTenantConnectionProviderImpl\n\t\t\tfinal Object dataSourceConfigValue = configurationValues.get( JdbcSettings.DATASOURCE );\n\t\t\treturn dataSourceConfigValue instanceof String\n\t\t\t\t\t? new DataSourceBasedMultiTenantConnectionProviderImpl<>()\n\t\t\t\t\t: null;\n\t\t}\n\t\telse if ( configValue instanceof MultiTenantConnectionProvider<?> multiTenantConnectionProvider ) {\n\t\t\treturn multiTenantConnectionProvider;\n\t\t}\n\t\telse {\n\t\t\tfinal var providerClass = providerClass( registry, configValue );\n\t\t\ttry {\n\t\t\t\treturn providerClass.newInstance();\n\t\t\t}\n\t\t\tcatch (Exception e) {\n\t\t\t\tthrow new ServiceException( \"Unable to instantiate specified multi-tenant connection provider [\" + providerClass.getName() + \"]\", e );\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static Class<? extends MultiTenantConnectionProvider<?>> providerClass(\n\t\t\tServiceRegistryImplementor registry, Object configValue) {\n\t\tif ( configValue instanceof Class<?> configType ) {\n\t\t\tif ( !MultiTenantConnectionProvider.class.isAssignableFrom( configType ) ) {\n\t\t\t\tthrow new ConnectionProviderConfigurationException( \"Class '\" + configType.getName()\n\t\t\t\t\t\t\t\t+ \"' does not implement 'MultiTenantConnectionProvider'\" );\n\t\t\t}\n\t\t\t@SuppressWarnings(\"unchecked\") // Safe, we just checked\n\t\t\tfinal var providerClass = (Class<? extends MultiTenantConnectionProvider<?>>) configType;\n\t\t\treturn providerClass;\n\t\t}\n\t\telse {\n\t\t\tfinal String className = configValue.toString();\n\t\t\tfinal var classLoaderService = registry.requireService( ClassLoaderService.class );","sourceCodeStart":54,"sourceCodeEnd":90,"githubUrl":"https://github.com/hibernate/hibernate-orm/blob/fad1729dce015f908198d57a8d80274a30f905a5/hibernate-core/src/main/java/org/hibernate/engine/jdbc/connections/internal/MultiTenantConnectionProviderInitiator.java#L54-L90","documentation":"Error \"Unable to instantiate specified multi-tenant connection provider [{}]\" thrown in hibernate/hibernate-orm.","triggerScenarios":"Thrown at hibernate-core/src/main/java/org/hibernate/engine/jdbc/connections/internal/MultiTenantConnectionProviderInitiator.java:72 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Ensure the MultiTenantConnectionProvider class has an accessible constructor and required dependencies","Fix the configured class name for the multi-tenant connection provider"],"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"}