Hibernate 一對一 之主鍵關聯

2021-09-21 20:31:54 字數 1795 閱讀 5988

2個 相關聯的配置檔案分別為:

tuser.hbm.xml

<?xml version=

"1.0"?> 

"age" /> 

"name"/> 

"passport" cascade="all"

tpassport.hbm.xml

<?xml version=

"1.0"?> 

執行的**

public

void testselect()

輸出的sql

select tuser0_.id   as id0_0_,

tuser0_.age  as age0_0_,

tuser0_.name as name0_0_

from t_user tuser0_

where tuser0_.id = ?

----------------------------------------

select tpassport0_.id as id1_0_, tpassport0_.serial as serial1_0_

from t_passport tpassport0_

where tpassport0_.id = ?

共2條sql 語句

實驗:當把 tuser.hbm.xml檔案中標籤中的contained="true"去掉了

輸出的sql:

select tuser0_.id         as id0_1_,

tuser0_.age        as age0_1_,

tuser0_.name       as name0_1_,

tpassport1_.id     as id1_0_,

tpassport1_.serial as serial1_0_

from t_user tuser0_

left outer join t_passport tpassport1_ on tuser0_.id = tpassport1_.id

where tuser0_.id = ?

一條sql語句。

測試**:

public

void testdelete()

catch(hibernateexception e) 

}

這裡的load() 可以替換為get()

1.當tuser.hbm.xml 中one-to-one 標籤中的casecade="true"的時候

輸出 2條sql

delete from t_user where id=?

delete from t_passport where id=?

2.當tuser.hbm.xml 中one-to-one 標籤中的casecade="false"的時候

只輸出一條sql

delete from t_user where id=?

測試**:

public

void testdelete()

catch(hibernateexception e) 

}

1.當tuser.hbm.xml 中one-to-one 標籤中的casecade="false"的時候

輸出一條sql

delete from t_user where id=?

2.當tuser.hbm.xml 中one-to-one 標籤中的casecade="false"的時候

delete from t_user where id=?

太奇怪了,失效了casecade 屬性沒用了。

hibernate 關聯關係 一對一 主鍵關聯

一對一關聯關係的使用 一對一關係在實際生活中是比較常見的,例如學生與學生證的關係,通過學生證可以找到學生。一對一關係在hibernate中的實現有兩種方式,分別是主鍵關聯和外來鍵關聯。以主鍵關聯 主鍵關聯的重點是,關聯的兩個實體共享乙個主鍵值。例如,student與card是一對一關係,它們資料庫中...

Mybatis學習筆記(三)之主鍵回填 一對一對映

在mysql資料庫中主鍵id自增後,再次得到資料庫生成的主鍵值。使用方法如下 使用keyproperty屬性指定是哪個主鍵字段,同時使用usegeneratedkeys屬性告訴這個主鍵是否使用資料庫內建策略生成。乙個學生,對應乙個成績,表 stu有乙個id 列,是 score表的外來鍵,學生和成績之...

Hibernate 一對一對映(二)

上篇介紹了hibernate一對一對映通過主鍵關聯,這篇介紹一對一對映通過唯一外來鍵關聯,還是用person和idcard例項說明。唯一外來鍵關聯其實是多對一的的特例,採用標籤來對映,指定多的一端unique為true,這樣就限制了多的一端的多重性為一,就是這樣來對映的。單向 person端 pac...