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