2013-08-31 40 views
0

我創建了一個名爲Image的實體。它保存圖像元數據等,我保存在數據庫中。目前我有和Image之間的one-to-many關係。所以我宣佈@OneToMany@JoinColumn註釋在圖像問題實體列表。這意味着在我的情況下,映像表中有一個名爲question_id的外鍵。如何在JPA中的不同關係中使用相同的實體?

我也想在其他關係中使用這個實體。 User可能有圖像等。但是,這意味着我也需要圖像表中的user_id列。隨着這種增長,這似乎是一個不好的方法。

我該怎麼做?我是否需要繼承並創建子類如QuestionImage,UserImage等?

還有其他更好的(和更簡單的方法)?

回答

1

不要定義JoinColumn。一對多單向關聯的默認值是使用JoinTable(正是出於這個原因)。

如果您沒有指定除@OneToMany(...)之外的任何內容,則將使用JoinTable。您當然可以使用@JoinTable註釋來定製其名稱和列名。

+0

嗯...但如果用戶和問題都有相同的ID呢?你需要在連接表中使用複合主鍵嗎?圖片ID +問題/用戶ID?或者它必須是另一個包含某個值的列嗎? – LuckyLuke

+0

您在連接表上創建每個與圖像關聯/所以一個連接表爲「用戶有圖像」,另一個爲「問題有圖像」。 –

+0

啊,當然。謝謝。 – LuckyLuke

相關問題