SpringDataJPA中的一對多,多對多用到的註解詳解----@mappedBy

mappedBy的意思就是「被映射」,即mappedBy這方不用管關聯關係,關聯關係交給另外一方處理數據庫

規律:凡是雙向關聯,mapped必設,由於根本都不必在2個表中都存在一個外鍵關聯,在數據庫中只要定義一邊就能夠了app

mappedBy: 
1>只有OneToOne,OneToMany,ManyToMany上纔有mappedBy屬性,ManyToOne不存在該屬性; 
2>mappedBy標籤必定是定義在被擁有方的,他指向擁有方; 
3>mappedBy的含義,應該理解爲,擁有方可以自動維護跟被擁有方的關係,固然,若是從被擁有方,經過手工強行來維護擁有方的關係也是能夠作到的; 
4>mappedBy跟joinColumn/JoinTable老是處於互斥的一方,能夠理解爲正是因爲擁有方的關聯被擁有方的字段存在,擁有方纔擁有了被擁有方。mappedBy這方定義JoinColumn/JoinTable老是失效的,不會創建對應的字段或者表。 spa

 

舉個例子,角色和用戶是一對多的關係,一個角色能夠對應多個用戶。角色Role表中的@OnetoMany中加入mappedBy=「role」,在用戶User表中@ManytoOne中能夠不加其它註釋,這樣,role也就是One的一方即是被擁有方,會在user表中也就是Many的一方(擁有方)生成外鍵。刪除某一個用戶時,角色表並不會有變化,而當刪除一個角色時,相對應的擁有那個角色的用戶會被級聯刪除。map

相關文章
相關標籤/搜索