Hibernate 多租户测试因 NPE 而失败
Hibernate multitenancy test fails with NPE
我正在使用基于模式的多租户,为 MultiTenantConnectionProvider 和 CurrentTenantIdentifierResolver 提供实现。尝试为单个租户获取休眠会话失败并出现 NPE。
查看 hibernate 的源代码,似乎 JDBCServicesImpl 在 else 块中将 connectionProvider 初始化为 null
private JdbcConnectionAccess buildJdbcConnectionAccess(Map configValues) {
final MultiTenancyStrategy multiTenancyStrategy = MultiTenancyStrategy.determineMultiTenancyStrategy( configValues );
if ( MultiTenancyStrategy.NONE == multiTenancyStrategy ) {
connectionProvider = serviceRegistry.getService( ConnectionProvider.class );
return new ConnectionProviderJdbcConnectionAccess( connectionProvider );
}
else {
connectionProvider = null;
final MultiTenantConnectionProvider multiTenantConnectionProvider = serviceRegistry.getService( MultiTenantConnectionProvider.class );
return new MultiTenantConnectionProviderJdbcConnectionAccess( multiTenantConnectionProvider );
}
}
请在此处查找测试用例 - http://pastebin.com/7Mt9wtHt and its stacktrace - http://pastebin.com/8ygAu7eh
我是否遗漏了一些基本的东西?
我也遇到了同样的问题。当我用谷歌搜索时,休眠中为此发布了一个错误。
这里是linkhttps://hibernate.atlassian.net/browse/HHH-7395
嗯,看了一会儿源代码之后。 Hibernate(目前)不支持模式导出。这是取自他们的 documentation.
Currently schema export will not really work with multi-tenancy. That may not change
因此,对于您的情况,解决方法是删除此行
config.getProperties().put(AvailableSettings.HBM2DDL_AUTO, "validate");
我正在使用基于模式的多租户,为 MultiTenantConnectionProvider 和 CurrentTenantIdentifierResolver 提供实现。尝试为单个租户获取休眠会话失败并出现 NPE。 查看 hibernate 的源代码,似乎 JDBCServicesImpl 在 else 块中将 connectionProvider 初始化为 null
private JdbcConnectionAccess buildJdbcConnectionAccess(Map configValues) {
final MultiTenancyStrategy multiTenancyStrategy = MultiTenancyStrategy.determineMultiTenancyStrategy( configValues );
if ( MultiTenancyStrategy.NONE == multiTenancyStrategy ) {
connectionProvider = serviceRegistry.getService( ConnectionProvider.class );
return new ConnectionProviderJdbcConnectionAccess( connectionProvider );
}
else {
connectionProvider = null;
final MultiTenantConnectionProvider multiTenantConnectionProvider = serviceRegistry.getService( MultiTenantConnectionProvider.class );
return new MultiTenantConnectionProviderJdbcConnectionAccess( multiTenantConnectionProvider );
}
}
请在此处查找测试用例 - http://pastebin.com/7Mt9wtHt and its stacktrace - http://pastebin.com/8ygAu7eh
我是否遗漏了一些基本的东西?
我也遇到了同样的问题。当我用谷歌搜索时,休眠中为此发布了一个错误。 这里是linkhttps://hibernate.atlassian.net/browse/HHH-7395
嗯,看了一会儿源代码之后。 Hibernate(目前)不支持模式导出。这是取自他们的 documentation.
Currently schema export will not really work with multi-tenancy. That may not change
因此,对于您的情况,解决方法是删除此行
config.getProperties().put(AvailableSettings.HBM2DDL_AUTO, "validate");