問題背景是這樣的:現在我有兩個表,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 回答
婷婷同學_
TA貢獻1844條經驗 獲得超8個贊
"desk屬性: String desk_id?和?Computer?computer。" 把“Computer?computer” 去掉試試,對應的computerId在.xml文件里配置成one-to-one 的 ? 然后在computer.setDesk(desk) 調用應該就可以了嗎
添加回答
舉報
0/150
提交
取消
