【问题标题】:Hibernate multitenancy test fails with NPEHibernate 多租户测试因 NPE 失败
【发布时间】:2015-04-23 05:49:08
【问题描述】:

我正在使用基于模式的多租户为 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 及其堆栈跟踪 - http://pastebin.com/8ygAu7eh

我错过了什么基本的东西吗?

【问题讨论】:

  • 嗨,你能发布错误堆栈跟踪吗?我想看看你从哪里弄来的 NPE。
  • 当然,我已将它作为另一个粘贴箱附加到帖子中

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


【解决方案1】:

好吧,在看了一会儿源代码之后。 Hibernate(就目前而言)不支持模式导出。这取自他们的documentation

目前模式导出并不能真正用于多租户。这可能不会改变

因此,在您的情况下,解决方法是删除此行

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

【讨论】:

    【解决方案2】:

    我也面临同样的问题。当我用谷歌搜索时,在休眠中发布了一个错误。 这是链接https://hibernate.atlassian.net/browse/HHH-7395

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-04
      • 1970-01-01
      • 1970-01-01
      • 2021-11-16
      相关资源
      最近更新 更多