@ SequenceGenerator.schema в мультитенантной JPA EclipseLink - PullRequest
0 голосов
/ 26 апреля 2018

Я использую Eclipselink с @Multitenant. все идет хорошо, кроме @ SequenceGenerator

@Entity
@NamedQuery(name = "Ville.findAll", query = "SELECT v FROM Ville v")
@Multitenant(MultitenantType.TABLE_PER_TENANT)
@TenantTableDiscriminator(type=TenantTableDiscriminatorType.SCHEMA, contextProperty="tenant-id")
public class Ville implements Serializable {
    private static final long serialVersionUID = 1L;


@Id
@SequenceGenerator(name = "VILLE_IDVILLE_GENERATOR", sequenceName = "SEQ_ID_VILLE", allocationSize = 1, schema = ? )
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "VILLE_IDVILLE_GENERATOR")
private Integer idville;

У меня проблема со значением атрибута аннотации SequenceGenerator.schema:

если я не укажу его, он будет искать его в схеме по умолчанию и вернет ошибку, поскольку не находит последовательность

похоже, что имя последовательности не соответствует соглашению об именах схем, поэтому в каждой системе арендатора / схемы

Как я могу настроить его с помощью @Multitenant для поиска последовательности в активной схеме арендатора?

в этой теме как настроить схему @SequenceGenerator в мультитенюсе есть это:

Самый простой способ, который я нахожу, это обновить схему в соответствии с текущим арендатором в начале каждой транзакции. SET search_path TO tenant! Как я могу это сделать ? Я попробовал:

EntityManager.cretQuery ("SET search_path TO tenant");

Я получаю эту ошибку: запрос не начинается с действительного идентификатора, должен быть либо SELECT, UPDATE, либо DELETE FROM.

1 Ответ

0 голосов
/ 07 августа 2018

Используйте createNativeQuery вместо createQuery.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...