@JoinColumn
給出Entity
一個外鍵到另一個Entity
而@JoinTable
將列出Entity
A和B. Entity
之間的所有關係之間的關係,據我所知,他們似乎都做類似的事情。我應該什麼時候使用其中一種?何時應該使用@JoinColumn或@JoinTable?
7
A
回答
12
比方說,你必須同時使用目標實體表(例如B
),其具有@ManyToOne
協會加時賽實體B
@JoinColumn將定義目標表的外鍵的實體A
(如B_ID
)。
@Entity
public class A {
private Long id;
@ManyToOne
@JoinColumn(name="B_ID")
private B b;
}
@JoinTable將使用一個單獨的表來保存A
和B
之間的關係。
@Entity
public class A {
private Long id;
@ManyToOne
@JoinTable(
name = "A_B",
joinColumns = @JoinColumn(name = "B_ID"),
inverseJoinColumns = @JoinColumn(name = "A_ID")
)
private B b;
}
這一次既不A
也不B
含有任何外鍵,因爲有一個單獨的表(例如A_B
)持有A
和B
之間的關聯。
3
@JoinTable將兩個表的id存儲到一個單獨的表中,而@JoinColumn將另一個表的id存儲在一個新列中。
@JoinTable:這是默認類型。當你需要更規範的數據庫時使用它。即。以減少冗餘。
@JoinColumn:使用它可以獲得更好的性能,因爲它不需要連接額外的表。
相關問題
- 1. 沒有joincolumn Hibbernate測繪地圖/ jointable
- 2. 試圖瞭解如何@JoinTable和@JoinColumn工作
- 3. @JoinColumn和@JoinTable在一對多關係中有什麼區別?
- 4. 使用JoinTable
- 5. 何時應該使用Ajax,何時不應該使用?
- 6. 什麼時候應該使用datagrid,何時應該使用datagridview?
- 7. 什麼時候應該使用$(object),何時應該使用$ object?
- 8. 何時應該使用RequireJS?
- 9. 何時應該使用?
- 10. 何時應該使用cfthread?
- 11. 何時應該使用[assembly:InternalsVisibleTo()]?
- 12. 數據庫中的UUID或GUID作爲主鍵。我應該何時使用它,何時不應該使用它?
- 13. 我應該使用&&或||
- 14. JPA - 爲什麼使用@JoinColumn?
- 15. mysql或平均或應該使用PHP?
- 16. Python:我應該何時使用file.read()或file.readlines()?
- 17. django - 我應該何時使用media_root或static_root?
- 18. 何時應該在Makefile中使用-c或-o GCC選項?
- 19. CXF以及何時應該使用JaxWsProxyFactoryBean或JAX-WS代理
- 20. 何時或爲什麼應該使用狀態檢查功能?
- 21. JPA使用@JOINTABLE和@JOINCOLUMNs
- 22. 什麼時候應該使用JCR,何時應該使用JPA/RDBMS?
- 23. 註解@JoinTable如何使用Scala編程
- 24. 使用CATransition時何時何地應該使用removeAllAnimations?
- 25. 如何使用@JoinTable映射時指定FK名稱?
- 26. 應該在@ManyToMany關係的兩邊指定@JoinTable嗎?
- 27. 何時應該使用HTML實體
- 28. Android:我應該何時使用singleInstance launchmode
- 29. 在jQuery中$何時應該使用$?
- 30. 什麼是QVariant,何時應該使用?
所以一個JoinTable是一個N-N關係? – julestruong
在數據庫術語中,它是一個多對多的關聯。在這種情況下,一個FK將具有唯一的約束,以將其與連接表一對多關聯。 –