亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

SSH關于hibernate 一對一映射 關系更新問題。

SSH關于hibernate 一對一映射 關系更新問題。

泛舟湖上清波郎朗 2018-12-06 18:22:37
問題背景是這樣的:現在我有兩個表,Desk和Computer,需要建立一對一關系,一張桌子上只能有一臺電腦,一臺電腦只能在一張桌子上。 desk屬性: String desk_id?和?Computer?computer。 Computer屬性:String computer_id和Desk?desk。 hibernate配置文件是: Desk中:<one-to-one? name="computer" class="org.gxl.entity.Computer" property-ref="desk"></one-to-one> 。 Computer中:<many-to-one? name="desk" class="org.gxl.entity.Desk" column="desk_id" unique="true"></many-to-one> 。 映射到數據庫表中,desk表的字段是desk_id一個,computer表中除了一個computer_id外還有外鍵desk_id這個屬性。 問題來了: 在進行更新時,桌子一與電腦一已經建立了一對一的聯系,我現在想讓桌子一和電腦二建立一對一聯系。我在更新時的主要帶碼是這樣的     Desk desk =***;//取到原本的desk     desk.setComputer(computer)//把桌子和電腦二建立聯系     HibernateTemplate template = super.getHibernateTemplate();?? ??? ??? ?template.setFlushMode(HibernateTemplate.FLUSH_EAGER);?? ??? ??? ?template.update(desk); 。這樣做更新不了。 這樣子為什么更新不了呢??是因為桌子一和電腦一之間的聯系沒解除?還是說只能由Computer才能computer.setDesk(..)呢? 對hibernate理解不是很深,請問hibernate對一對一更新的機制是怎么樣的?
查看完整描述

2 回答

?
慕田峪7331174

TA貢獻1828條經驗 獲得超13個贊

你首先先要解除桌子一和電腦一之間的關聯,然后試試用有主鍵的一方進行關聯computer.setDesk(desk);

查看完整回答
反對 回復 2018-12-16
?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

"desk屬性: String desk_id?和?Computer?computer。" 把“Computer?computer” 去掉試試,對應的computerId在.xml文件里配置成one-to-one 的 ? 然后在computer.setDesk(desk) 調用應該就可以了嗎

查看完整回答
反對 回復 2018-12-16
  • 2 回答
  • 0 關注
  • 542 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號