EclipseLink 确实在错误的租户中插入命令

EclipseLink does insert command in wrong tenant

我按模式使用租户,我有以下实体:

@Entity
@Multitenant(MultitenantType.TABLE_PER_TENANT)
@TenantTableDiscriminator(type = TenantTableDiscriminatorType.SCHEMA)
public class Person {
    @OneToOne(mappedBy = "person", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    private CTPS ctps;
}

@Entity
@Table(name = "CTPS")
@Multitenant(MultitenantType.TABLE_PER_TENANT)
@TenantTableDiscriminator(type = TenantTableDiscriminatorType.SCHEMA)
public class CTPS {
    @OneToOne
    @JoinTable(name = "PERSON_CTPS", joinColumns = @JoinColumn(name = "CTPS_ID"), inverseJoinColumns = @JoinColumn(name = "PERSON_ID"))
    private Person person;
}

在同时使用两个不同租户的更新期间,其中一个请求发生密钥违规错误,因为 tenant_a 正尝试在 person_ctps table 中执行插入,使用tenant_b.

我正在使用: postgresql-9.4.5-3 wildfly-8.2.0 EclispeLink 2.6.3 补丁问题 410870 和 493235。

有人知道如何解决这个问题吗?

我发现了问题。 EclipseLink中没有克隆维护关系表的对象。

加上问题498891的附件补丁,问题解决