2016-07-29 18 views
1

我使用租客模式插入指令,我有以下實體:的EclipseLink確實在錯誤的租戶

@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嘗試使用tenant_b在person_ctps表中執行插入操作。

我使用: PostgreSQL的-9.4.5-3 wildfly-8.2.0 EclispeLink 2.6.3與問題410870和493235.

任何人都知道如何解決這個斑塊?

+0

請提供最終導致這一情況的細節礦石的信息。你是否從一位租客那裏讀到了堅持另一位? – Chris

+0

兩個線程在同一時間持續存在,您的各個租戶中的每一個都由數據庫模式分隔 – Andrey

回答

0

我發現了這個問題。維護關係表的對象不在EclipseLink中克隆。

隨着問題498891的安裝補丁,問題就解決了