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

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 8.2\. 在集合中出現的依賴對象 (Collections of dependent objects) Hibernate支持組件的集合(例如: 一個元素是姓名(Name)這種類型的數組)。 你可以使用`&lt;composite-element&gt;`標簽替代`&lt;element&gt;`標簽來定義你的組件集合。 ``` <set name="someNames" table="some_names" lazy="true"> <key column="id"/&gt; <composite-element class="eg.Name"> <!-- class attribute required --> <property name="initial"/> <property name="first"/> <property name="last"/>; </composite-element> </set> ``` 注意,如果你定義的Set包含組合元素(composite-element),正確地實現`equals()`和`hashCode()`是非常重要的。 組合元素可以包含組件,但是不能包含集合。如果你的組合元素自身包含組件, 你必須使用`&lt;nested-composite-element&gt;`標簽。這是一個相當特殊的案例 - 在一個組件的集合里,那些組件本身又可以包含其他的組件。這個時候你就應該考慮一下使用one-to-many關聯是否會更恰當。 嘗試對這個組合元素重新建模為一個實體-但是需要注意的是,雖然Java模型和重新建模前是一樣的,關系模型和持久性語義會有細微的變化。 請注意如果你使用`&lt;set&gt;`標簽,一個組合元素的映射不支持可能為空的屬性. 當刪除對象時, Hibernate必須使用每一個字段的值來確定一條記錄(在組合元素表中,沒有單獨的關鍵字段), 如果有為null的字段,這樣做就不可能了。你必須作出一個選擇,要么在組合元素中使用不能為空的屬性,要么選擇使用`&lt;list&gt;`,`&lt;map&gt;`,`&lt;bag&gt;` 或者 `&lt;idbag&gt;`而不是 `&lt;set&gt;`。 組合元素有個特別的用法是它可以包含一個`&lt;many-to-one&gt;`元素。類似這樣的映射允許你將一個many-to-many關聯表映射為組合元素的集合。(A mapping like this allows you to map extra columns of a many-to-many association table to the composite element class.) 接下來的的例子是從`Order`到`Item`的一個多對多的關聯關系, 關聯屬性是 `purchaseDate`, `price` 和 `quantity` 。 ``` <class name="eg.Order" .... > .... <set name="purchasedItems" table="purchase_items" lazy="true"> <key column="order_id"> <composite-element class="eg.Purchase"> <property name="purchaseDate"/> <property name="price"/> <property name="quantity"/> <many-to-one name="item" class="eg.Item"/> <!-- class attribute is optional --> </composite-element> </set> </class> ``` 當然,當你定義Item時,你無法引用這些purchase,因此你無法實現雙向關聯查詢。記住組件是值類型,并且不允許共享引用。某一個特定的`Purchase` 可以放在`Order`的集合中,但它不能同時被`Item`所引用。 其實組合元素的這個用法可以擴展到三重或多重關聯: ``` <class name="eg.Order" .... > .... <set name="purchasedItems" table="purchase_items" lazy="true"> <key column="order_id"> <composite-element class="eg.OrderLine"> <many-to-one name="purchaseDetails" class="eg.Purchase"/> <many-to-one name="item" class="eg.Item"/> </composite-element> </set> </class> ``` 在查詢中,表達組合元素的語法和關聯到其他實體的語法是一樣的。
                  <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>

                              哎呀哎呀视频在线观看