一对一关联 关系映射:
售后服务(customer) ————订单表(order)
在售后服务(customer)实体类中配置
@NotNull
@JoinColumn(name = "order_id", nullable = false, updatable = false)
在售后表中配置一个订单ID 不能为空 不能修改
@OneToOne
private Order order
在订单表(order)实体类中配置
@OneToOne( cascade = CascadeType.REMOVE, mappedBy = "order")
级联影响删除操作
private Customer customer
一对多关联 关系映射:
会员(Member)————会员等级(MemberRank)
在会员(Member)实体类中配置
@ManyToOne(fetch = FetchType.LAZY)
public MemberRank getMemberRank;
在会员等级(MemberRank)实体类中配置
@OneToMany(mappedBy = "memberRank", fetch = FetchType.LAZY)
public Set<Member> getMembers()
多对多关联 关系映射:
会员(Member)————货品(Goods)
在会员(Member)实体类中配置
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "xx_member_favorite_goods")--这里是指定生中间表的表名
public Set<Goods> getFavoriteGoods()
在货品(Goods)实体类中配置
@ManyToMany(mappedBy = "favoriteGoods", fetch = FetchType.LAZY)
public Set<Member> getFavoriteMembers()
mappedBy :
1、只有配置了OneToOne,OneToMany,ManyToMany的一方才有mappedBy属性
2、mappedBy标签一定是定义在被拥有方的,他指向拥有方
3、mappedBy跟joinColumn/joinTable总是处于互斥的 一方,也可以理解为正是由于拥有方的关联被拥有方的字段存在,拥有方才拥有了被拥有方。mappedBy这方定义的joinColumn/joinTable总是失效的,不会建立对应的字段或者表;
注:关系维护方是指双方的关系的绑定(指set外键关系)由关系维护方来维护的。并且只在关系维护方总存在外键字段(被维护方字段)。。