关于Hibernate的save方法同时打印insert语句和update语句的困惑

      声明BZ只是一个新手,针对个人解决的问题。欢迎各位高手指正。

        最近项目中遇到这个问题在hibernate执行save方法时由于在设置实体的外键使用了CascadeType.ALL,导致保存失败(BZ的本意是不用保存关联实体,所以关联实体为NULL),发现后台同时打印insert语句和update语句,

开始以为先插入后又自动更新了实体很困惑,googlel了很多的资料都没有得到答案,调试的时候发现在提交事务的时候就打印了update语句(我估计它是在提交的时候检查脏数据),最终在这个主题update while doing save in hibernate 发现了这么一句话All of this(insert and update) could have been done in single operation(insert), instead of first doing insert and then update. What is the advantage of performing 2 operations. ,说明这是Hibernate的内置机制,并没有错,就是让人有点难以理解,本人的理解是它在事务提交的时候需要进行脏数据检查,还有一点如果实体保存的时候还有关联实体的保存的时候也会出现这种情况,需要设置inverse="true"属性。 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值