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的附件补丁,问题解决
我按模式使用租户,我有以下实体:
@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的附件补丁,问题解决