gpt4 book ai didi

spring - Hibernate 4 MultiTenancy Spring 3 Schema 导出错误

转载 作者:行者123 更新时间:2023-12-04 13:42:25 27 4
gpt4 key购买 nike

我正在尝试使用 Multi-Tenancy 选项和自动模式创建来配置 Hibernate SessionFactory,但是我遇到了这个错误:

java.lang.NullPointerException
at org.hibernate.tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.prepare(SuppliedConnectionProviderConnectionHelper.java:51)
at org.hibernate.tool.hbm2ddl.DatabaseExporter.<init>(DatabaseExporter.java:52)
at org.hibernate.tool.hbm2ddl.SchemaExport.execute(SchemaExport.java:367)
at org.hibernate.tool.hbm2ddl.SchemaExport.create(SchemaExport.java:304)
at org.hibernate.tool.hbm2ddl.SchemaExport.create(SchemaExport.java:293)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:498)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1742)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1780)
at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:242)

这是我的 Spring 配置:
 <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource1"/>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
<prop key="hibernate.hbm2ddl.auto">create-drop</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</prop>

<prop key="hibernate.multiTenancy">DATABASE</prop>
<prop key="hibernate.multi_tenant_connection_provider">org.springframework.webflow.samples.booking.SampleMultiTenantConnectionProvider</prop>
<prop key="hibernate.tenant_identifier_resolver">org.springframework.webflow.samples.booking.SampleCurrentTenantIdentifierResolver</prop>
</props>
</property>
</bean>


<!-- Deploys a in-memory "booking" datasource populated -->
<bean id="dataSource1" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.hsqldb.jdbcDriver" />
<property name="url" value="jdbc:hsqldb:mem:booking1" />
<property name="username" value="sa" />
<property name="password" value="" />
</bean>

<bean id="dataSource2" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.hsqldb.jdbcDriver" />
<property name="url" value="jdbc:hsqldb:mem:booking2" />
<property name="username" value="sa" />
<property name="password" value="" />
</bean>

现在我只使用 DataSource 1,SampleConnectionProvider 和 TenantResolver 总是返回相同的租户和数据源。但是,当 Schema Export 运行时,它会抛出 NullPointerException。提供给 SuppliedConnectionProviderHelper 的 ConnectionProvider 为空。在使用 Multi-Tenancy 时,他似乎无法选择合适的 ConnectionProvider。 SuppliedConnectionProviderHelper 是在 SchemaExport 上创建的:
this.connectionHelper = new SuppliedConnectionProviderConnectionHelper(
serviceRegistry.getService( ConnectionProvider.class )
);

使用 Multi-Tenancy 时可以使用 hibernate.hbm2ddl.auto 吗?已经在 hibernate 文档中搜索,但没有找到任何东西。

任何帮助将非常感激!

此致

若昂·西马斯

最佳答案

看起来 SchemaExport 中不支持 Multi-Tenancy .我查看了其他地方的源代码连接提供者是基于 Multi-Tenancy 策略获得的。见第 581 行 here .我在 SchemaExport 中没有看到这种情况。此外,如果有多个数据源,SchemaExport 也应该自动在其他数据源中创建架构。我没有看到 SchemaExport 做这样的事情。

SeeJIRA issue . JIRA 问题没有您描述的确切问题,但建议在注释中创建架构。

这只是我的静态分析。您可能应该打开问题或在这里等待有人发布答案。据我所知,这似乎是错误或不受支持的功能。

关于spring - Hibernate 4 MultiTenancy Spring 3 Schema 导出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15636595/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com