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的一方(拥有方)生成外键。删除某一个用户时,角色表并不会有变化,而当删除一个角色时,相对应的拥有那个角色的用户会被级联删除。

猜你喜欢

转载自my.oschina.net/u/3852748/blog/2875574