У меня работает приложение JPA, и теперь я хочу поддерживать многопользовательскую работу. Мне нравится использовать XML вместо аннотаций.Поддержка JPA eclipselnk multi-tenancy
У меня есть пара orm.xml, на которую ссылается persistence.xml.
<entity-mappings
xmlns="http://java.sun.com/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_2_0.xsd"
version="2.0">
<package>mypackage</package>
<entity class="Foo" />
<entity class="Bar" />
</entity-mappings>
Я хотел бы использовать ту же конфигурацию несколько найма для всех субъектов: однотабличных, колонка дискриминатора tenantUserId, контекстно-свойство tenant.userId.
По: https://wiki.eclipse.org/EclipseLink/Examples/JPA/EclipseLink-ORM.XML
<tenant-discriminator-column name="tenantUserId" context-property="tenant.userId"/>
ли поставить линию выше? Я попытался создать EclipseLink-orm.xml следующего
<?xml version="1.0" encoding="UTF-8" ?>
<entity-mappings
xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.eclipse.org/eclipselink/xsds/persistence/orm http://www.eclipse.org/eclipselink/xsds/eclipselink_orm_2_1.xsd"
version="2.1">
<tenant-discriminator-column name="tenantUserId" context-property="tenant.userId"/>
<persistence-unit-metadata>
<persistence-unit-defaults>
<tenant-discriminator-column name="tenantUserId" context-property="tenant.userId"/>
</persistence-unit-defaults>
</persistence-unit-metadata>
</entity-mappings>
Оба являются недействительными в соответствии со схемой. Где положить eclipselink-orm.xml?
Есть ли способ сказать, что: все объекты являются многопользовательскими (одна таблица)? Должен ли я указывать их для всех объектов один за другим?
<entity-mappings
xmlns="http://java.sun.com/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_2_0.xsd"
version="2.0">
<package>mypackage</package>
<entity class="Foo" >
<multi-tenant/>
</entity>
<entity class="Bar" >
<multi-tenant/>
</entity>
</entity-mappings>
Спасибо.
Спасибо. изменена версия до 2.5. – eastwater
Я использовал сопоставленный суперкласс для определения многоуровневости для иерархии классов. Есть ли способ отключить multitenant для одного класса в иерархии? Благодарю. – eastwater