Я использую 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.