<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 21.3\. 級聯生命周期(Cascading lifecycle) 需要顯式調用`save()`仍然很麻煩,我們可以用級聯來解決這個問題。 ``` <set name="children" inverse="true" cascade="all"> <key column="parent_id"/> <one-to-many class="Child"/> </set> ``` 這樣上面的代碼可以簡化為: ``` Parent p = (Parent) session.load(Parent.class, pid); Child c = new Child(); p.addChild(c); session.flush(); ``` 同樣的,保存或刪除`Parent`對象的時候并不需要遍歷其子對象。 下面的代碼會刪除對象`p`及其所有子對象對應的數據庫記錄。 ``` Parent p = (Parent) session.load(Parent.class, pid); session.delete(p); session.flush(); ``` 然而,這段代碼 ``` Parent p = (Parent) session.load(Parent.class, pid); Child c = (Child) p.getChildren().iterator().next(); p.getChildren().remove(c); c.setParent(null); session.flush(); ``` 不會從數據庫刪除`c`;它只會刪除與`p`之間的連接(并且會導致違反`NOT NULL`約束,在這個例子中)。你需要顯式調用`delete()`來刪除`Child`。 ``` Parent p = (Parent) session.load(Parent.class, pid); Child c = (Child) p.getChildren().iterator().next(); p.getChildren().remove(c); session.delete(c); session.flush(); ``` 在我們的例子中,如果沒有父對象,子對象就不應該存在,如果將子對象從collection中移除,實際上我們是想刪除它。要實現這種要求,就必須使用`cascade="all-delete-orphan"`。 ``` <set name="children" inverse="true" cascade="all-delete-orphan"> <key column="parent_id"/> <one-to-many class="Child"/> </set> ``` 注意:即使在collection一方的映射中指定`inverse="true"`,級聯仍然是通過遍歷collection中的元素來處理的。如果你想要通過級聯進行子對象的插入、刪除、更新操作,就必須把它加到collection中,只調用`setParent()`是不夠的。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看