困恼的mappedBy
人跟身份證雙向關(guān)聯(lián)
在Person里面定義的注解:
@OneToOne(cascade={CascadeType.ALL},optional=true)
public IDCard getIdCard() {
return idCard;
??? }
在IDCard里面定義的注釋:
@OneToOne(cascade=CascadeType.ALL,mappedBy="idCard",optional=false)
??? public Person getPerson() {
??????? return person;
??? }
多了一個(gè)mappedBy這個(gè)方法,它表示什么呢?它表示此表和Person的關(guān)系是定義在Person里面的idCard這個(gè)成員上面的,它表示此表是一對(duì)一關(guān)系中的從表,也就是關(guān)系是在person表里面維護(hù)的,這一點(diǎn)很重要.Person表是關(guān)系的維護(hù)者,owner side,有主導(dǎo)權(quán),它有個(gè)外鍵指向IDCard。
我們也可以讓主導(dǎo)權(quán)在IDCard上面,也就是讓它產(chǎn)生一個(gè)指向Person的外鍵,這也是可以的,但是最好是讓Person來(lái)維護(hù)整個(gè)關(guān)系,這樣更符合我們正常的思維.
我們也可以看到在Person里面IDCard是注釋是optional=true,也就是說(shuō)一個(gè)人是可以沒(méi)有身份證的,但是一個(gè)身份證不可以沒(méi)有人,所以在IDCard里面注釋person的時(shí)候,optional就為false了,這樣就可以防止一個(gè)空的身份證記錄進(jìn)數(shù)據(jù)庫(kù).
轉(zhuǎn)載于:https://www.cnblogs.com/cxccbv/archive/2009/01/22/1379957.html
總結(jié)
以上是生活随笔為你收集整理的困恼的mappedBy的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: WITH AS【原创】
- 下一篇: 小小的吹一下集结号~