2013-03-26 13 views
6

Ich versuche, eine Hibernate Session mit Multi-Tenancy-Optionen und mit automatischer Schemaerstellung zu konfigurieren, jedoch bin ich auf diesem Fehler fest:Hibernate 4 Multitenancy Frühling 3 Schema Export Fehler

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) 

Hier ist mein Federkonfiguration:

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

Für jetzt bin ich nur mit Datasource 1 und die SampleConnectionProvider und TenantResolver immer den gleichen Mieter und Datenquelle zurück. Wenn jedoch Schema Export ausgeführt wird, wird NullPointerException ausgelöst. Der bereitgestellte ConnectionProvider für den SuppliedConnectionProviderHelper ist null. Es scheint, dass er keinen geeigneten ConnectionProvider auswählen kann, wenn er Multi-Tenancy verwendet. Die SuppliedConnectionProviderHelper auf Schema erstellt:

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

Können Sie die hibernate.hbm2ddl.auto verwenden, wenn Multitenancy mit? Bereits im Winterschlaf Dokumentation suchen, aber nichts gefunden.

Jede Hilfe wäre sehr willkommen!

Mit freundlichen Grüßen

João Simas

Antwort

4

Es sieht aus wie es keine Unterstützung für Multi-Tenancy in SchemaExport ist. Ich schaute Quellcode in anderen Orten Verbindung Anbieter ist auf der Grundlage von Multi-Tenancy-Strategie erhalten. Siehe Zeile 581 here. Ich sehe das nicht in SchemaExport. Wenn mehrere Datenquellen vorhanden sind, sollte SchemaExport das Schema automatisch auch in anderen Datenquellen erstellen. Ich sehe SchemaExport nicht so.

See und JIRA issue. Das JIRA-Problem hat nicht genau das Problem, das Sie beschrieben haben, aber es gibt Vorschläge zum Erstellen eines Schemas in Kommentaren.

Dies ist nur meine statische Analyse. Sie sollten das Problem wahrscheinlich öffnen oder hier auf jemanden warten, um die Antwort zu posten. Soweit ich weiß, scheint dies ein Bug oder eine nicht unterstützte Funktion zu sein. Diese

+0

Dank! Ich habe auch für das JIRA-Thema gestimmt –

Verwandte Themen