2016-09-20 62 views
0

我有這3個實體E1,E2,E3。 我想知道我必須注意我的E3類有兩個主鍵,每個主鍵都指向不同的表以及其他字段。jpa 2.0註釋到一個有兩個ID的類指向兩個不同的表

@Entity 
public class E1 extends RAP{ 
    /** 
    * 
    */ 
} 

@Entity 
public abstract class E2{ 
    /** 
    * 
    */ 
} 

E3類有2個主鍵指向e1和e2。

@Entity 
public class E3 extends RAP{ 
    @Id 
    @ManyToOne 
    @JoinColumn(name = "e1_id") 
    private E1 e1; 

    @Id 
    @ManyToOne 
    @JoinColumn(name = "e2_id") 
    private E2 e2; 

    private Double myfield1; 
    private Double myfield2; 
} 

但存在問題。像這樣...

This class has a composite primary key. It must use an ID class. 

,所以我想用一些註釋不使用@Embedded實體

+0

你不應該有2個主鍵,使用嵌入式操作系統,如果你只想指數快速接入領域,或約束有也不重複的值,你可以用其他的方法來實現這一點,但每個JPA應該只有一個ID字段 – karelss

+0

可以請你告訴我這另一種方法 – isom

+0

定義一個'@ IdClass'的消息稱... –

回答

1

Here你如何指定了多個列約束的例子,以及如何申報表之間的關係,也請檢查this以獲得關於jpa 2.0中索引的參考,並與2.1的主要區別。

你的問題看起來像一個分層模型一個完美的候選人,這link顯示瞭如何定義和使用這種模型的例子。

如果你可以解釋一下你想存檔多一點,也許我們可以找到一個更具體的解決方案。

相關問題