多租户中的@ SequenceGenerator.schema JPA EclipseLink

时间:2018-04-26 14:25:22

标签: jpa eclipselink multi-tenant sequence-generators

我在@Multitenant中使用Eclipselink。除了@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配置它以查找活动租户中的序列?

本主题how to set @SequenceGenerator schema in multitenancy中的

是:

我找到的简单方法是在每个事务SET search_path TO tenant开始时更新架构以适应当前租户!我怎样才能做到这一点 ?我试过了:

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

我得到了这个错误:查询不是以有效的标识符开头,必须是SELECT,UPDATE或DELETE FROM。

1 个答案:

答案 0 :(得分:0)

使用createNativeQuery代替createQuery。