2011-08-31 70 views
10

它看起來好像support for multi tenancy has been added to hibernate近6個月現在和updated at least once since如何使用JPA在Hibernate 4中啓用多租戶?

它看起來相當瑣碎,以獲得多租戶會議JPA之外:

Session session = sessionFactory.withOptions().tenantIdentifier("jboss").openSession(); 

而是你如何使它能夠在使用JPA通過冬眠的應用程序? (如果可能的話)。

在此先感謝。

+1

您的兩個鏈接都不起作用。如果你將它們添加回來會很好? –

回答

7

您可以通過在persistence.xml中屬性如下配置。

您也可以在代碼中設置這些屬性,並將它們傳遞給地圖Persistence.createEntityManagerFactory()。在這種情況下,您可以傳遞一個對象實例,而不僅僅是一個類名。

更多的信息在Hibernate documentation

5

EntityManager.getDelegate()將返回底層SessionImpl。如果您使用的模式作爲多租戶的策略不需要hibernate.multi_tenant_connection_provider

<property name="hibernate.multiTenancy" value="DATABASE"/> 
<property name="hibernate.multi_tenant_connection_provider" value="com.example.MyConnectionProvider" /> 
<property name="hibernate.tenant_identifier_resolver" value="com.example.MyTenantIdResolver" /> 

+0

雖然 – Bozho

+1

會話不可用,但sessionfactory不能用於sessionfailssion =(SessionImpl)entityManager.getDelegate(); SessionFactory sessionFactory = tmpsession.getSessionFactory(); Session session = sessionFactory.withOptions()。tenantIdentifier(「jboss」).openSession();' – bpgergo

+0

hm,right。忘了那個 – Bozho