Hibernate一對一單向主鍵關聯
舉例:人Person和身份證IdCard 1對1 身份證爲主表
類模型
Person(從) ---------> IdCard(主)
id:int id:int
name:String cardNo:String
idCard:IdCard
表關係
Person表 IdCard表
id | name id | cardNo
1 aaa -------------> 1 8888888
2 bbb -----------à2 9999999
Person表的id既做Person的主鍵,又作爲外鍵參考IdCard表主鍵
1.建立對象模型
IdCard.java
Person.java
2.編寫配置文件
Person.hbm.xml
<!—這裏的主鍵生成策略爲外鍵策略,參考了對應類IdCard的主鍵--à
<!— <param name="property">idCard</param>中idCard說明了Person類的主鍵是由哪個類對象對應的表中的主鍵給出的à
<generator class="foreign">
<param name="property">idCard</param>
</generator>
</id>
<property name="name"/>
<!--one-to-one`標籤說明了hibernate怎麼加載它關聯的對象,默認根據主鍵加載-->
<!—constrained屬性爲true表明Person表的主鍵作爲外鍵參照了IdCard表-->
<one-to-one name="idCard" constrained="true"/>
IdCard.hbm.xml
測試結果:
在Person.hbm.xml中沒有設置cascade="all" 但可以級聯保存和查詢,加上cascade="delete" 纔可以級聯刪除
一對一雙向關聯
測試結果: