Как включить многопользовательский режим в Hibernate 4 с JPA?

Мне кажется, что поддержка для нескольких арендаторов была добавлена ​​в спящий режим почти шесть месяцев и обновляется не реже одного раза с.

Похоже, тривиально получить сессию с несколькими арендаторами вне JPA:

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

Но как вы включите его в приложении, использующем hibernate через JPA? (Если возможно).

Спасибо заранее.

Ответ 1

Вы можете настроить его с помощью свойств в файле persistence.xml следующим образом:

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

Если вы используете SCHEMA как стратегию с несколькими арендаторами, hibernate.multi_tenant_connection_provider не требуется.

Вы также можете установить эти свойства в свой код и передать их на карте в Persistence.createEntityManagerFactory(). В этом случае вы можете передать экземпляр объекта, а не просто имя класса.

Дополнительная информация в Документация для спящего режима.