Я пытаюсь настроить Hibernate SessionFactory с использованием параметров нескольких арендованного имущества и с автоматическим созданием схемы, однако я застрял на этой ошибки:Hibernate 4 Multitenancy Spring 3 схемы экспорта Ошибка
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)
Вот мой конфигурация пружины:
<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. Предоставленный ConnectionProvider для поставщика SuppliedConnectionProviderHelper имеет значение null. Похоже, что он не может выбрать подходящего ConnectionProvider при использовании многопользовательской работы. SuppliedConnectionProviderHelper создан на SchemaExport:
this.connectionHelper = new SuppliedConnectionProviderConnectionHelper(
serviceRegistry.getService(ConnectionProvider.class)
);
Вы можете использовать hibernate.hbm2ddl.auto при использовании Multitenancy? Уже поиск в документации спящего режима, но ничего не нашел.
Любая помощь была бы высоко оценена!
С наилучшими пожеланиями
João Simas
Спасибо! Я голосовал за вопрос JIRA –