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

mappedBy的意思就是“被映射”,即mappedBy這方不用管關聯關係,關聯關係交給另一方處理

規律:凡是雙向關聯,mapped必設,因爲根本都沒必要在2個表中都存在一個外鍵關聯,在數據庫中只要定義一邊就可以了

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

 

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章