2013-03-26 2 views
6

Я пытаюсь настроить 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

ответ

4

Похоже, что нет поддержки многопроцессорных аренды в SchemaExport. Я смотрел исходный код, в других местах провайдер соединений получается на основе стратегии многопользовательской аренды. См. Строку 581 here. Я не вижу, чтобы это произошло в SchemaExport. Кроме того, если имеется несколько источников данных, SchemaExport должен автоматически создавать схему в других источниках данных. Я не вижу, чтобы SchemaExport делал что-то подобное.

See и JIRA issue. Проблема JIRA не имеет точной проблемы, о которой вы описали, но есть предложения по созданию схемы в комментариях.

Это только мой статический анализ. Вероятно, вы должны открыть проблему или подождать, пока кто-то опубликует ответ. Насколько я знаю, это, кажется, ошибка или неподдерживаемая функция.

+0

Спасибо! Я голосовал за вопрос JIRA –

Смежные вопросы