2013-10-20 285 views
0

所以我有「OrderItem」類。它的主鍵假設由「productID」和「orderID」(來自另一個實體的FK參考)組成。 我如何使用註釋設置它?休眠:主鍵由外鍵組成

在此先感謝!

: ordersItems
屬性: 的productID(PK-PK)------------------>產品
的orderID (PK-PK)------------------>訂單

鑑於這些實體:

@Entity 
@Table(name="products") 
public class Product { 

    @Id 
    @Column(name="productID") 
    private Integer id; 
    private String description; 
} 


@Entity 
@Table(name="orders") 
public class Order{ 

    @Id 
    private int orderID; 

    @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER) 
    @JoinColumn(name="orderID") 
    private List<OrderItem> items; 
} 

@Entity 
@Table(name="ordersItems") 
public class OrderItem{ 

    @ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE}) 
    @JoinColumn(name="productID") 
    private Product product; 
    private int quantity; 
    private float price; 
} 

回答

0

您必須創建一個嵌入式域類,其中只有主鍵中的字段由外鍵構建。該註釋位於外鍵域類上的類級別@Embeddable處。

這裏是EmbeddedId

http://docs.oracle.com/javaee/6/api/javax/persistence/EmbeddedId.html

+0

的文檔,但這裏的東西......我可以在註釋和那些添加的兩個屬性的秩序。麻煩來了,當我必須設置他們作爲@Id。 我試過用EmbbeddedID創建2個與FK同名的新屬性,但它沒有奏效。如預期的那樣,hibernate會拋出:「在實體映射中重複列...」 任何想法? – mjuanes

+0

對不起,我錯過了你的回覆。你能用你試過的最新代碼更新你的問題嗎? –