zoukankan      html  css  js  c++  java
  • delete和alldeleteorphan在进行删除操作时的不同

     -----------------------------------------------------------------------------------------

    delete:当通过Session的delete()方法删除当前对象时,级联删除所有关联的对象。

    delete-orphan:删除所有和当前对象解除关联关系的对象。

    all-delete-orphan:包含了delete和delete-orphan的行为。

    -----------------------------------------------------------------------------------------

    如下代码:

     

     当:cascade="delete",执行上面delete方法,building1对象的与hotel解除了关联,所以它不会被删除。该酒店的参照物以及酒店本身都会被删除。

    当:cascade="all-delete-orphan",执行上面delete方法,building1对象与hotel解除了关联,它与该酒店的参照物以及酒店本身都会被删除。

    注意上面的代码中有一句:building1.setTbHotel(null);

    当cascade="all-delete-orphan",去掉这一行代码也没有关系,因为接下来的一行代码it.remove();还是会让building1对象丧失与酒店的关联,于是它仍旧会被删除,同时酒店和其关联参照物也会被删除。

    但是,当cascade="delete",去掉这一行会出现错误,因为building1对象只是丧失了与酒店的关联,而

    不会被删除掉,并且它的hotel_id没有被设置为null,所以,在删除数据库中酒店数据的时候,就会违反外键约束的原则,从而出现错误。

  • 相关阅读:
    关于晋升的5个建议
    不拘一格:网飞的自由与责任工作法
    博恩·崔西的人生管理课
    老板防止我上班摸鱼,给我装了个chrome插件
    彻底搞懂彻底搞懂事件驱动模型
    python 100 days
    不要懒惰地重复自己
    不要让“追求完美”阻碍你做决策
    Windows上使用Python Terminal(终端控制台) 打印日志带有特殊符号时显示不出来
    Python3 Mysql DBhelper封装
  • 原文地址:https://www.cnblogs.com/chaohi/p/2330420.html
Copyright © 2011-2022 走看看