为了账号安全,请及时绑定邮箱和手机立即绑定

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 关注
  • 582 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号