我是靠谱客的博主 高兴嚓茶,最近开发中收集的这篇文章主要介绍hibernate之saveorupdate()、save()、update()都有什么区别, 为什么saveorupdate不能更新成功或卡死,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
saveorupdate()如果传入的对象在数据库中有就做update操作,如果没有就做save操作。
save()在数据库中生成一条记录,如果数据库中有,会报错说有重复的记录。
update()就是更新数据库中的记录。
当你的主键是自己分配的时候 就不能使用saveorupdate()了,否则会报 Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1 这个错误。这时只能使用save()方法直接保存了。
save方法更适用于确定了是要插入,而且需要得到插入数据的主键。
而saveOrUpdate更倾向于不缺定是插入还是更新,而且你不需要得到他的主键。
save()和saveOrUpdate()方法可以在没有事务的情况下执行,但是如果没有手动调用flush()方法会面临关联对象不被保存的问题。
还有 saveOrUpdate修改数据库数据时,如果 根据where条件能检索到两条以上的数据,那么执行update也会报错。 而此时,删除多余的数据只保留一条就可以解决了 。
最后
以上就是高兴嚓茶为你收集整理的hibernate之saveorupdate()、save()、update()都有什么区别, 为什么saveorupdate不能更新成功或卡死的全部内容,希望文章能够帮你解决hibernate之saveorupdate()、save()、update()都有什么区别, 为什么saveorupdate不能更新成功或卡死所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复