inverse="true

inverse="true"表示不对双方关系进行控制,一般使用在一对多和多对多关系映射中.

 


在一对多中,inverse="true"会加入到一的一方的set集合配置中,因为一对多里,关系是由多方的外键进行控制的,一方无法控制关系,因为要这样配置.


在多对多关系中,双方关系应该是由中间表进行管理,但由于多对多不会生成中间表的映射,因此对中间表(也就是关系)的控制需要由多对多的双方或其中的某一方来完成,当某一方不希望对中间表进行控制时,可以把这个配置加入,表示自己不对关系进行控制,而交给对方进行控制.

 <set lazy="extra" inverse="true" name="children">
      <key column="pid"/>
      <one-to-many class="com.bjsxt.oa.model.Module"/>
    </set

 

cascade=“all” all代表把所有对父对象进行保存/更新/删除会导致对(所有)子对象的保存/更新/删除。你试一下把all改成 none 看一下;

all : 所有情况下均进行关联操作。
none:所有情况下均不进行关联操作。这是默认值。
save-update:在执行save/update/saveOrUpdate时进行关联操作。
delete:在执行delete时进行关联操作。

  1. Parent parent = (Parent); session.load(Parent.class, pid);;   
  2. session.delete(parent);; 

1. 爸爸那边设置了cascade=all和inverse=true
a. delete from children
b. delete from parent

2. 爸爸那边设置了cascade=all,没有设inverse=true
a. update children set parent_id=null where parent_id=?
b. delete from children
c. delete from parent

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值