<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 21.2\. 雙向的一對多關系(Bidirectional one-to-many) 假設我們要實現一個簡單的從Parent到Child的&lt;one-to-many&gt;關聯。 ``` <set name="children"> <key column="parent_id"/> <one-to-many class="Child"/> </set> ``` 如果我們運行下面的代碼 ``` Parent p = .....; Child c = new Child(); p.getChildren().add(c); session.save(c); session.flush(); ``` Hibernate會產生兩條SQL語句: * 一條`INSERT`語句,為`c`創建一條記錄 * 一條`UPDATE`語句,創建從`p`到`c`的連接 這樣做不僅效率低,而且違反了列`parent_id`非空的限制。我們可以通過在集合類映射上指定`not-null="true"`來解決違反非空約束的問題: ``` <set name="children"> <key column="parent_id" not-null="true"/> <one-to-many class="Child"/> </set> ``` 然而,這并非是推薦的解決方法。 這種現象的根本原因是從`p`到`c`的連接(外鍵parent_id)沒有被當作`Child`對象狀態的一部分,因而沒有在INSERT語句中被創建。因此解決的辦法就是把這個連接添加到Child的映射中。 ``` <many-to-one name="parent" column="parent_id" not-null="true"/> ``` (我們還需要為類`Child`添加`parent`屬性) 現在實體`Child`在管理連接的狀態,為了使collection不更新連接,我們使用`inverse`屬性。 ``` <set name="children" inverse="true"> <key column="parent_id"/> <one-to-many class="Child"/> </set> ``` 下面的代碼是用來添加一個新的`Child` ``` Parent p = (Parent) session.load(Parent.class, pid); Child c = new Child(); c.setParent(p); p.getChildren().add(c); session.save(c); session.flush(); ``` 現在,只會有一條`INSERT`語句被執行! 為了讓事情變得井井有條,可以為`Parent`加一個`addChild()`方法。 ``` public void addChild(Child c) { c.setParent(this); children.add(c); } ``` 現在,添加`Child`的代碼就是這樣 ``` Parent p = (Parent) session.load(Parent.class, pid); Child c = new Child(); p.addChild(c); session.save(c); session.flush(); ```
                  <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>

                              哎呀哎呀视频在线观看