2013-03-26 7 views
6

Ben, çok kira seçenekleri ve otomatik şema oluşturma ile kullanarak bir hazırda SessionFactory yapılandırmak çalışıyorum ancak ben bu hata şaşırıp:hazırda 4 çoklu müşteri Bahar 3 Şema İhracat Hata

İşte
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) 

olduğunu benim yay yapılandırma: şimdi sadece DataSource 1 kullanıyorum ve SampleConnectionProvider ve TenantResolver hep aynı kiracı ve veri kaynağı dönmek için

<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> 

. Ancak Schema Export çalıştığında, NullPointerException'ı atar. SuppliedConnectionProviderHelper'a sağlanan ConnectionProvider boş. Multitenancy kullanırken uygun bir ConnectionProvider seçemediği anlaşılıyor. SuppliedConnectionProviderHelper SchemaExport oluşturulur: çoklu müşteri kullanırken

this.connectionHelper = new SuppliedConnectionProviderConnectionHelper(
      serviceRegistry.getService(ConnectionProvider.class) 
    ); 

Eğer hibernate.hbm2ddl.auto kullanabilir miyim? Hazırda bekletme belgelerinde arama yapın ancak hiçbir şey bulamadınız.

Herhangi bir yardım çok takdir edilecektir!

Saygılarımızla

João Simas

cevap

4

SchemaExport çoklu kiracılığa için destek var gibi görünüyor. Diğer yerlerde kaynak koduna baktım, çoklu kiralama stratejisine dayalı bağlantı sağlayıcısı elde ediliyor. Bakınız 581 here. SchemaExport'ta bunun olduğunu göremiyorum. Ayrıca birden fazla veri kaynağı varsa, SchemaExport da diğer veri kaynaklarında otomatik olarak şema oluşturmalıdır. SchemaExport'un böyle bir şey yaptığını görmüyorum.

See ve JIRA issue. JIRA sorununun açıkladığınız tam bir sorunu yoktur, ancak yorumlarda şema oluşturmak için önerilen çalışma vardır.

Bu sadece benim statik çözümlememdir. Muhtemelen sorunu açmalı veya birilerinin cevap yazmasını beklemelisiniz. Bildiğim kadarıyla, bu hata veya desteklenmeyen özellik gibi görünüyor.

+0

teşekkürler! Ben de JIRA'ya oy verdim –