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

不理解更新操作

我理解的这里的语义是这样的:

直接从学生表中获取主键为“1”的学生对象

将这个学生对象添加到班级2中

将班级2更新到班级表中。

问题:为什么上面的操作可以改变   学生表中  主键为“1”的学生  的外键?

我理解的情况应该是这样的:原来的主键为“1”的学生信息不变,系统再次添加了一个除了外键不同其他column都一样的学生记录,然后添加失败,学生表主键冲突


正在回答

4 回答

我也觉的奇怪  他的主键生成策略是increment 就是hibernate生成的主键  控制台也是输出了修改的sql语句  怎么会是修改了?  而不是重新添加一条? 好神奇

0 回复 有任何疑惑可以回复我~
#1

哀幻暝 提问者

我猜的啊:更新操作,根本上就是写了一堆update的sql代码,update当然会自动覆盖原来的列了
2016-10-30 回复 有任何疑惑可以回复我~
#2

慕粉3291149 回复 哀幻暝 提问者

你仔细看更新语句,只是更新了张三的gid而已,更新操作并不会修改该学生的主键Id, 兄弟没学过数据库吧
2016-11-24 回复 有任何疑惑可以回复我~

其实我也是刚刚学到这个框架 很多问题也不明白 等其他的大神来答吧~

0 回复 有任何疑惑可以回复我~

主键自带唯一非空约束啊,而且之后张三的id依然是“1”而不是“3”。可以排除hibernate自动删除原记录再增加一条的这种可能,hibernate只是做了修改,问题依然是:怎么被修改的!

0 回复 有任何疑惑可以回复我~
#1

慕粉3291149

没什么问题 , 你新建了一个二班,将原来一班的张三加入到了一班,数据库做的操作只是把张三的gid由1变为2,仅此而已,不用想太多
2016-11-24 回复 有任何疑惑可以回复我~

我的理解是,你在更新了班级信息的同时,学生信息的主键也被重置了,因为主键只是自增,并没有相关的约束!

而外键由于有约束,所以和新表相对应

http://img1.sycdn.imooc.com//57fb88760001f90003530148.jpg

0 回复 有任何疑惑可以回复我~
#1

哀幻暝 提问者

你这么一说,我回忆起来上一门课中老师说过,在设置了主键自增的情况下,即使手动设置主键也是无效的
2016-10-10 回复 有任何疑惑可以回复我~
#2

哀幻暝 提问者 回复 哀幻暝 提问者

怎么被修改的!!
2016-10-10 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Hibernate初探之一对多映射
  • 参与学习       42157    人
  • 解答问题       310    个

Hibernate中一对多关联映射配置,以及cascade和inverse属性作用

进入课程

不理解更新操作

我要回答 关注问题
微信客服

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

帮助反馈 APP下载

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

公众号

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