2013-04-26 67 views
2

我不知道我該怎麼做,或者我會選擇什麼樣的關係。如何繼續JPA的第三級協會

我有3個表和1個關聯是:

客戶-----(0,N)----(命令)-----(0,N)---- - 服務

目標還附加了(命令)關聯,並且Target可以在命令(0,1)中爲空。 Command和Client之間的關係是雙向的。

對我來說,類圖將是這樣的:

UML

但我不知道如何着手,如果我創建命令的實體與@ManyToOne,或其他方法。我真正的問題是關於與三張桌子的關聯。你可以幫幫我嗎 ?

回答

3

您將需要按照您的建議使用@ManyToOne。 EclipseLink對JPA(即使您使用的是不同的實現)有很大的文檔集

在命令你也會有這樣的:

@ManyToOne 
@JoinColumn(name="CLIENT_ID", nullable=true) 
private Client client; 

而在客戶端,你也會有這樣的:

@OneToMany(mappedBy="client") 
private Set<Command> commands; 
1

This link給出了一個很好的例子。但是,OneToManyManyToOne註釋的api都給出了相當不錯的示例,說明如何使用它們。這通常是一個開始的好地方。您只需確定the relationship will own it的哪一面。

+0

我認爲我應該使用另一種結構,例如與表關聯ManyToMany。但是這更好,謝謝你的鏈接! – toshiro92 2013-04-26 13:59:56

+0

如果客戶端使用一個命令並且許多命令將與一個客戶端相關聯,則只能使用ManyToMany。你已經將它映射爲從客戶端到命令的OneToMany關係,這似乎是有道理的。 – 2013-04-26 14:07:44