JPA中關係印射注意事項

2021-08-22 17:22:45 字數 1202 閱讀 9016

一對一不用多說.

一對多:

一a對多b.單向: (tb_a,tb_b)

**省略必須的但和主題的內容如@entity等標記,setter,getter等

class a

class b

只在a這一端加上@onetomany就行了.b這一端不用任何標記,這時jpa一定要求另外乙個輔助表.表名為:tb_a_tb_b即兩表用_鏈結,其中儲存兩個表的id關係.欄位名稱為:

a_id,b在a中引用的字段+」_id」;即 bs_id; 如果是自動生成表,這個關聯表也會自動生成.

在單向一對多時的操作時也是只需單向設定即可,id對應關係由關聯表自動維護:

b b = new b();

//不用b.setid(***);

a a = new a();

a.getbs().add(b);

em. persist(a);

一a對多

b.雙向

(tb_a,tb_b)

如果不想用中間關聯表

,只能用雙向關係:

class a

class b

此時tb_b中需a_id欄位.

操作時需要雙向設定,否則a_id為null,關係丟失:

b b = new b();

//其它set.

a a = new a();

b.seta(a);

a.getbs().add(b);

em. persist(a);

這樣才能正確儲存完整的資料格式

多b對一a

.雙向(tb_a,tb_b)

當然,你可以從b中利用外健預設單向關聯manytoone,但這樣的單向關係在絕大多數場合沒有意義.

如乙個班級沒有獲取學生的集合,卻在學生實體中獲取班級,雖然可能,但沒有多少人不把它做成雙向關係的:

這裡需要在tb_b中設定a_id為外來鍵關聯到tb_a中的id.

class a

class b

而且這裡的操作應該是:

a a = new a();

bb = new b();

b.seta(a);

em. persist(b);

JPA中關係印射注意事項

一對一不用多說.一對多 一a對多b.單向 tb a,tb b 省略必須的但和主題的內容如 entity等標記,setter,getter等 class a class b 只在a這一端加上 onetomany就行了.b這一端不用任何標記,這時jpa一定要求另外乙個輔助表.表名為 tb a tb b即...

C 中map注意事項

1 在map中,由key查詢value時,首先要判斷map中是否包含key。2 如果不檢查,直接返回map key 可能會出現意想不到的行為。如果map包含key,沒有問題,如果map不包含key,使用下標有乙個危險的 會在map中插入乙個key的元素,value取預設值,返回value。也就是說,...

程式設計中的注意事項

下面 編譯時,提示有未檢查的內容,執行時可能有異常。為什麼不檢查呢,因為不知道帶入的t和v就是static方法中的integer和double,所以提示有未檢查或不安全的操作,由於下面程式建立的inte ce介面的兩個引數和static方法中的吻合,所以,執行時沒有出現異常。這裡建立的inte ce...