2011-07-18 88 views
0

我有一個問題,我卡住:(我必須建立關係的關係(奇怪!) 例如,我有一個關係,其中一個實體A可以有許多B一對多)JPA多層關係

A ----> B 

現在我需要另一種關係,其中一個實體D同樣也有A和B等之間的複合關係的OneToOne關係,

C--> (A--->B) , not C-->A-->B 

並非是c將有一個關係A和B一起,它應該像C - > D(A - > B)。

生成的聯接表在JPA中沒有任何主鍵,現在我在考慮如何映射這種關係。請注意,正常的A - > B也是需要的,因爲這不能嵌入,它應該是持久的。

謝謝。

示例: 位置和事件是我的兩個實體,我想將CleanPlan與它聯繫起來。意味着一個CleanPlan與位置1的事件1相關。所以我指定在事件1中的位置1有一個cleanplan。那有意義嗎?

enter image description here

+0

你能給我們一個真實的例子嗎?描述實際的實體。 –

+0

例如,位置和事件是我的兩個實體,我想將CleanPlan與它聯繫起來。意味着一個CleanPlan與位置1的事件1相關。所以我指定在事件1中的位置1有一個cleanplan。那有意義嗎? – Shahriar

回答

1

我會說這

enter image description here

或此,根據事件的地點基數。

enter image description here

+0

非常感謝,是的,但是如何在JPA中做到這一點?我應該創建一個名爲EventLocation的類嗎?如果是的話,那麼如果我有10個實體並且想要在它們之間建立這種關係,則會有太多的類 – Shahriar

+0

@Shahriar,你的意思是太多的對象?這就像一個**關聯類**。 –

+0

不,用JPA實體來思考,在我的Event實體中,我將@OneToMany與Location關聯起來,所以創建了查找表eventlocation,但是我不使用它作爲Java Entity類。現在如果我想將CleanPlan實體與此關聯查找表,在哪部分以及如何聲明我的關聯。我是否需要編寫該EventLocation類,然後在CleanPlan實體類中編寫@OnetoOne EvenLocation?像那樣? – Shahriar

1

有在JPA這個問題的兩個方面。 1)映射表是craeted。 2)創建映射行而不是映射表。

我認爲第二個選項會讓你的生活更輕鬆。但只有在事件和位置具有單向關係的情況下才有可能。然後在ManyToOne方面,把「mappedBy」。這將在ManyToOne表上生成映射表。你可以在CleanPlan表上引用該列。