2012-08-10 148 views
18

我有兩個數據庫實體:ForumTopicJPA:外鍵註釋

Topicprotected long forumId數據成員,它表明當然Topic的論壇。

我的問題是這個數據成員使用什麼註釋?

+0

你不需要在'Topic'中聲明'forumId'。 – 2012-08-10 16:50:30

+0

你爲什麼這麼說?我認爲這是必要的,因爲我必須知道該主題屬於哪個論壇 – socksocket 2012-08-10 16:53:03

+1

@socksocket我認爲這是因爲您可以註釋屬性'Forum',用'@ JoinColumn'註釋指定id,請參閱我的答案。 ;) – elias 2012-08-10 16:54:41

回答

25

由於論壇有很多話題和主題屬於獨一無二的論壇,你可能想要去與@ManyToOne註釋的一個論壇類型屬性:

@ManyToOne 
@JoinColumn(name = "forumId") 
private Forum forum; 

查看更多:

ManyToOne and JPA mapping

+5

但在這種情況下的「問題」是,當您將主題序列化爲XML或JSON(例如將其傳遞給客戶端)時,整個Forum對象也將默認被序列化...如果if你上傳一個主題到你的服務器,你需要傳遞整個Topic + Forum對象,你不能只使用論壇ID。在某些情況下,手動插入相關實體的外鍵似乎更容易。 – splinter123 2014-09-09 22:45:27

1

@ManyToOne 正如註釋所暗示的 - 每個論壇有許多主題

5

正如其他人已經回答 -
您應該使用ManyToOne和JoinColumn註釋。
請記住,由於JPA是關於ORM的 - 對象關係映射,
您應該引用另一個對象,就像您在Java中「自然地」完成的那樣 - 即通過對象而不是通過其標識符(它是forumId)
這是JPA和Hibernate之間的關係(以前稱爲JPA)之間的設計考慮因素之一。