java - Hibernate Multi-Tenancy 测试因 NPE 失败

标签 java hibernate nullpointerexception hibernate-4.x multi-tenant

我正在使用基于模式的 Multi-Tenancy ,为 MultiTenantConnectionProvider 和 CurrentTenantIdentifierResolver 提供实现。尝试为单个租户获取 hibernate session 失败并出现 NPE。 查看hibernate的源代码,似乎JDBCServicesImpl在else block 中将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及其堆栈跟踪 - http://pastebin.com/8ygAu7eh

我错过了一些基本的东西吗?

最佳答案

好吧,在查看源代码一段时间后。 Hibernate(目前)不支持模式导出。这是取自他们的documentation .

Currently schema export will not really work with multi-tenancy. That may not change

因此,就您的情况而言,解决方法是删除此行

config.getProperties().put(AvailableSettings.HBM2DDL_AUTO, "validate");

关于java - Hibernate Multi-Tenancy 测试因 NPE 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29814744/

相关文章:

java - 我使用的是 POI 4.1.0 版本。使用shiftRows()时,Excel文件被损坏

java - 报告 Google Appengine 上长请求的进度

java - List<User> 未删除 RecyclerView 适配器中包含的 POJO 对象

java - Spring MVC Hibernate 集成问题

Hibernate 标准 API

android - 引用主布局时出现空指针异常

java - splitapkbundle 无效。包目标未知语言 : [gr]

java - 从Java更改为Android的空指针异常

android - 如何解决这个 : 'Running android lint' issue

java - 如何映射JPA中的实体或DB中的表结构