shop++ 4.0系统 一对多,多对一 ,多对多关系配置(个人心得和一些见解)

一对一关联 关系映射:

售后服务(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外键关系)由关系维护方来维护的。并且只在关系维护方总存在外键字段(被维护方字段)。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值