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
Dank! Ich habe auch für das JIRA-Thema gestimmt –