<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國際加速解決方案。 廣告
                # 5.1.10\. 多對一(many-to-one) 通過`many-to-one`元素,可以定義一種常見的與另一個持久化類的關聯。 這種關系模型是多對一關聯(實際上是一個對象引用-譯注):這個表的一個外鍵引用目標表的 主鍵字段。 ``` <many-to-one name="propertyName" column="column_name" class="ClassName" cascade="cascade_style" fetch="join|select" update="true|false" insert="true|false" property-ref="propertyNameFromAssociatedClass" access="field|property|ClassName" unique="true|false" not-null="true|false" optimistic-lock="true|false" lazy="proxy|no-proxy|false" not-found="ignore|exception" entity-name="EntityName" formula="arbitrary SQL expression" node="element-name|@attribute-name|element/@attribute|." embed-xml="true|false" index="index_name" unique_key="unique_key_id" foreign-key="foreign_key_name" /> ``` | ![1](img/1.png) | `name`: 屬性名。 | |:--- |:--- | | ![2](img/2.png) | `column` (可選): 外間字段名。它也可以通過嵌套的 `&lt;column&gt;`元素指定。 | | ![3](img/3.png) | `class` (可選 - 默認是通過反射得到屬性類型): 關聯的類的名字。 | | ![4](img/4.png) | `cascade(級聯)` (可選): 指明哪些操作會從父對象級聯到關聯的對象。 | | ![5](img/5.png) | `fetch` (可選 - 默認為 `select`): 在外連接抓取(outer-join fetching)和序列選擇抓取(sequential select fetching)兩者中選擇其一。 | | ![6](img/6.png) | `update, insert` (可選 - 默認為 `true`) 指定對應的字段是否包含在用于`UPDATE` 和/或 `INSERT` 的SQL語句中。如果二者都是`false`,則這是一個純粹的 “外源性(derived)”關聯,它的值是通過映射到同一個(或多個)字段的某些其他屬性得到 或者通過trigger(觸發器)、或其他程序生成。 | | ![6](img/6.png) | `property-ref`: (可選) 指定關聯類的一個屬性,這個屬性將會和本外鍵相對應。 如果沒有指定,會使用對方關聯類的主鍵。 | | ![7](img/7.png) | `access` (可選 - 默認是 `property`): Hibernate用來訪問屬性的策略。 | | ![8](img/8.png) | `unique` (可選): 使用DDL為外鍵字段生成一個唯一約束。此外, 這也可以用作`property-ref`的目標屬性。這使關聯同時具有 一對一的效果。 | | ![9](img/9.png) | `not-null` (可選): 使用DDL為外鍵字段生成一個非空約束。 | | ![10](img/10.png) | `optimistic-lock` (可選 - 默認為 `true`): 指定這個屬性在做更新時是否需要獲得樂觀鎖定(optimistic lock)。 換句話說,它決定這個屬性發生臟數據時版本(version)的值是否增長。 | | ![11](img/11.png) | `lazy` (可選 - 默認為 `proxy`): 默認情況下,單點關聯是經過代理的。`lazy="no-proxy"`指定此屬性應該在實例變量第一次被訪問時應該延遲抓取(fetche lazily)(需要運行時字節碼的增強)。 `lazy="false"`指定此關聯總是被預先抓取。 | | ![12](img/12.png) | `not-found` (可選 - 默認為 `exception`): 指定外鍵引用的數據不存在時如何處理: `ignore`會將行數據不存在視為一個空(null)關聯。 | | ![13](img/13.png) | `entity-name` (可選): 被關聯的類的實體名。 | | ![14](img/14.png) | `formula` (可選): SQL表達式,用于定義_computed(計算出的)_外鍵值。 | `cascade`屬性設置為除了`none`以外任何有意義的值, 它將把特定的操作傳遞到關聯對象中。這個值就代表著Hibernate基本操作的名稱, `persist, merge, delete, save-update, evict, replicate, lock, refresh`, 以及特別的值`delete-orphan`和`all`,并且可以用逗號分隔符 來組合這些操作,例如,`cascade="persist,merge,evict"`或 `cascade="all,delete-orphan"`。更全面的解釋請參考[第 10.11 節 “傳播性持久化(transitive persistence)”](../Text/pr01_split_000.html "10.11\. 傳播性持久化(transitive persistence)"). 注意,單值關聯 (many-to-one 和 one-to-one 關聯) 不支持刪除孤兒(orphan delete,刪除不再被引用的值). 一個典型的簡單`many-to-one`定義例子: ``` <many-to-one name="product" class="Product" column="PRODUCT_ID"/> ``` `property-ref`屬性只應該用來對付遺留下來的數據庫系統, 可能有外鍵指向對方關聯表的是個非主鍵字段(但是應該是一個惟一關鍵字)的情況下。 這是一種十分丑陋的關系模型。比如說,假設`Product`類有一個惟一的序列號, 它并不是主鍵。(`unique`屬性控制Hibernate通過SchemaExport工具進行的DDL生成。) ``` <property name="serialNumber" unique="true" type="string" column="SERIAL_NUMBER"/> ``` 那么關于`OrderItem` 的映射可能是: ``` <many-to-one name="product" property-ref="serialNumber" column="PRODUCT_SERIAL_NUMBER"/> ``` 當然,我們決不鼓勵這種用法。 如果被引用的唯一主鍵由關聯實體的多個屬性組成,你應該在名稱為`&lt;properties&gt;`的元素 里面映射所有關聯的屬性。 假若被引用的唯一主鍵是組件的屬性,你可以指定屬性路徑: ``` <many-to-one name="owner" property-ref="identity.ssn" column="OWNER_SSN"/> ```
                  <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>

                              哎呀哎呀视频在线观看