blogjava's web log ...
先看由滿江紅翻譯團隊(RedSaga Translate Team)翻譯的一對一配置說明一對一
持久化對象之間一對一的關聯關系是通過one-to-one元素定義的。
<one-to-one name="propertyName" (1) class="ClassName" (2) cascade="cascade_style" (3) constrained="true|false" (4) fetch="join|select" (5) property-ref="propertyNameFromAssociatedClass" (6) access="field|property|ClassName" (7) formula="any SQL expression" (8) lazy="true|proxy|false" (9) entity-name="EntityName" (10) node="element-name|@attribute-name|element/@attribute|." embed-xml="true|false" />
name: 屬性的名字。
class (可選 - 默認是通過反射得到的屬性類型):被關聯的類的名字。
cascade(級聯) (可選) 表明操作是否從父對象級聯到被關聯的對象。
constrained(約束) (可選) 表明該類對應的表對應的數據庫表,和被關聯的對象所對應的數據庫表之間,通過一個外鍵引用對主鍵進行約束。 這個選項影響save()和delete()在級聯執行時的先后順序以及 決定該關聯能否被委托(也在schema export tool中被使用).
fetch (可選 - 默認設置為選擇): 在外連接抓取或者序列選擇抓取選擇其一.
property-ref: (可選) 指定關聯類的屬性名,這個屬性將會和本類的主鍵相對應。如果沒有指定,會使用對方關聯類的主鍵。
access (可選 - 默認是 property): Hibernate用來訪問屬性的策略。
formula (可選):絕大多數一對一的關聯都指向其實體的主鍵。在一些少見的情況中, 你可能會指向其他的一個或多個字段,或者是一個表達式,這些情況下,你可以用一個SQL公式來表示。 (可以在org.hibernate.test.onetooneformula找到例子)
lazy (可選 - 默認為 proxy): 默認情況下,單點關聯是經過代理的。lazy="true"指定此屬性應該在實例變量第一次被訪問時應該延遲抓取(fetche lazily)(需要運行時字節碼的增強)。 lazy="false"指定此關聯總是被預先抓取。注意,如果constrained="false", 不可能使用代理,Hibernate會采取預先抓取!
entity-name (可選): 被關聯的類的實體名。
posted on 2006-04-06 16:05 record java and net 閱讀(6055) 評論(3) 編輯 收藏 所屬分類: java
<one-to-one name="address" class="com.test.Address" cascade="all"/> <one-to-one name="student" class="com.test.Student"/> 這里的2個一對一都對應什么,只要定義一對一的字段,無需定義別的嗎 回復 更多評論
是的。。 回復 更多評論
寫一個級聯刪除的例子吧。 搞不定 回復 更多評論