EclipseLink (JPA) мультитенюанс на основе таблиц с JTA, как? - PullRequest
0 голосов
/ 07 сентября 2018

Наш прикладной проект представляет собой пакет OSGI, использующий JPA с EclipseLink и JTA, и требует многопользовательской работы за одним столом, когда идентификатор клиента приходит из запроса REST. Из того, что я прочитал и попробовал, кажется почти невозможным:

  1. Поскольку идентификатор клиента изменяется в зависимости от запроса, каждый запрос с новым идентификатором клиента должен вручную создавать новый PersistenceContext (EntityManager) с соответствующим свойством.
  2. Но контексты постоянства не могут быть созданы вручную при использовании JTA (@PersistenceUnit не вводится и Persistence.createEntityManagerFactory не работает), согласно http://tomee.apache.org/jpa-concepts.html.

Я что-то упустил? Или это буквально невозможно сделать?

1 Ответ

0 голосов
/ 07 сентября 2018

Вы можете установить свойства мультитенанта / дискриминатора в менеджере сущностей для запроса. Но это не безопасно для многопоточности и отложенной инициализации.

Я попробовал наш CMobileCom JPA , который поддерживает многопользовательскую работу за одним столом. Для каждого арендатора должен использоваться новый EntityManager. То есть EntityManager не должен использоваться совместно для доступа к данным для нескольких арендаторов. Это также верно для EclipseLink.

Отказ от ответственности: я являюсь разработчиком CMobileCom JPA , облегченной реализации JPA для Java и Android.

...