<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、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 5.1.11\. 一對一 持久化對象之間一對一的關聯關系是通過`one-to-one`元素定義的。 ``` <one-to-one name="propertyName" class="ClassName" cascade="cascade_style" constrained="true|false" fetch="join|select" property-ref="propertyNameFromAssociatedClass" access="field|property|ClassName" formula="any SQL expression" lazy="proxy|no-proxy|false" entity-name="EntityName" node="element-name|@attribute-name|element/@attribute|." embed-xml="true|false" foreign-key="foreign_key_name" /> ``` | ![1](img/1.png) | `name`: 屬性的名字。 | |:--- |:--- | | ![2](img/2.png) | `class` (可選 - 默認是通過反射得到的屬性類型):被關聯的類的名字。 | | ![3](img/3.png) | `cascade(級聯)` (可選) 表明操作是否從父對象級聯到被關聯的對象。 | | ![4](img/4.png) | `constrained(約束)` (可選) 表明該類對應的表對應的數據庫表,和被關聯的對象所對應的數據庫表之間,通過一個外鍵引用對主鍵進行約束。 這個選項影響`save()`和`delete()`在級聯執行時的先后順序以及 決定該關聯能否被委托(也在schema export tool中被使用). | | ![5](img/5.png) | `fetch` (可選 - 默認設置為`選擇`): 在外連接抓取或者序列選擇抓取選擇其一. | | ![6](img/6.png) | `property-ref`: (可選) 指定關聯類的屬性名,這個屬性將會和本類的主鍵相對應。如果沒有指定,會使用對方關聯類的主鍵。 | | ![7](img/7.png) | `access` (可選 - 默認是 `property`): Hibernate用來訪問屬性的策略。 | | ![8](img/8.png) | `formula` (可選):絕大多數一對一的關聯都指向其實體的主鍵。在一些少見的情況中, 你可能會指向其他的一個或多個字段,或者是一個表達式,這些情況下,你可以用一個SQL公式來表示。 (可以在org.hibernate.test.onetooneformula找到例子) | | ![9](img/9.png) | `lazy` (可選 - 默認為 `proxy`): 默認情況下,單點關聯是經過代理的。`lazy="no-proxy"`指定此屬性應該在實例變量第一次被訪問時應該延遲抓取(fetche lazily)(需要運行時字節碼的增強)。 `lazy="false"`指定此關聯總是被預先抓取。_注意,如果`constrained="false"`, 不可能使用代理,Hibernate會采取預先抓取!_ | | ![10](img/10.png) | `entity-name` (可選): 被關聯的類的實體名。 | 有兩種不同的一對一關聯: * 主鍵關聯 * 惟一外鍵關聯 主鍵關聯不需要額外的表字段;如果兩行是通過這種一對一關系相關聯的,那么這兩行就共享同樣的主關鍵字值。所以如果你希望兩個對象通過主鍵一對一關聯,你必須確認它們被賦予同樣的標識值! 比如說,對下面的`Employee`和`Person`進行主鍵一對一關聯: ``` <one-to-one name="person" class="Person"/> ``` ``` <one-to-one name="employee" class="Employee" constrained="true"/> ``` 現在我們必須確保PERSON和EMPLOYEE中相關的字段是相等的。我們使用一個被成為`foreign`的特殊的hibernate標識符生成策略: ``` <class name="person" table="PERSON"> <id name="id" column="PERSON_ID"> <generator class="foreign"> <param name="property">employee</param> </generator> </id> ... <one-to-one name="employee" class="Employee" constrained="true"/> </class> ``` 一個剛剛保存的`Person`實例被賦予和該`Person`的`employee`屬性所指向的`Employee`實例同樣的關鍵字值。 另一種方式是一個外鍵和一個惟一關鍵字對應,上面的`Employee`和`Person`的例子,如果使用這種關聯方式,可以表達成: ``` <many-to-one name="person" class="Person" column="PERSON_ID" unique="true"/> ``` 如果在`Person`的映射加入下面幾句,這種關聯就是雙向的: ``` <one-to-one name"employee" class="Employee" property-ref="person"/> ```
                  <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>

                              哎呀哎呀视频在线观看