天天看點

hibernate5(13)注解映射[5]一對一共享主鍵關聯一對一共享主鍵

下面我們直接通過執行個體來講解共享主鍵配置:

主鍵主要方:article

引用主鍵方:articlecontent。這是共享主鍵關聯的關鍵配置地方所在類

下面是我們的測試方法:

下面是幾點需要注意的:

在設定屬性id的時候必須注意字段的長度,如筆者這樣使用oracle的sequence來生成id,其長度有14位之長,則應選擇hibernate類型long,對應的實體中應選擇long,這樣不會出現溢出的情況。 在測試的時候必須要注意這兩張表之間因為已經存在了一對一的關系,是以我們不能隻寫<code>articlecontent.setarticle(article);</code>而忽略了<code>articlecontent.setarticle(article);</code>這樣在做插入的時候會報出attempted to assign id from null one-to-one property: address的錯誤. 如果不寫cascade=”all”或者寫成cascade=”none”的話,即使寫了<code>article.setarticlecontent(articlecontent);</code>和<code>articlecontent.setarticle(article);</code>也不會發生任何事情,隻有user會被存儲。 one-to-one的效率問題——-one-to-one在查詢時,總是查出和主表關聯的表,而且one-to-one的lazy屬性隻有false proxy no-proxy三種,沒有true。outer-join=”false”也隻是徒增查詢語句條數,把本來的一條sql語句變成多條。是以在one-to-one這種一對一的關系不是很強的情況下(one-to-one關系強即總是查出這所有的幾個關聯表),或者是在一張表中存在多個one-to-one的情況下,使用最好one-to-many來代替one-to-one。