在开发SSH框架的项目时在使用save()添加数据时不停报出
的错误。这个错误原因是主键重复xxx主键已经存在,不能再进行添加了
在查找解决方案的时候发现可以用saveorupdate替代save函數来进行保存。
saveorupdate()如果传入的对象在数据库中有就做update操作如果没有就做save操作。 save()在数据库中生成一条记录如果数据库中有,会报错说有重複的记录 update()就是更新数据库中的记录 主键在saveorupdate()方法中是起着关键作用的,只有这个主键的值不为空的时候才进行insert还是update的判断否则直接insert 若主鍵不为空,就可以进行saveorupdate()操作了 save方法更适用于确定了是要插入,而且需要得到插入数据的主键 而saveOrUpdate更倾向于不缺定是插入还是更新而且你鈈需要得到他的主键 另一方面,如果你无法确定你要插入或更新的对象是不是持久态或游离态时如果你save一个持久态或更新一个游离态,這都是有问题的此时你就要用到saveOrUpdate 总体来说,如果你能确定你即将操作对象的状态则不需要用saveOrUpdate
这是由于主键设置为自增,同时在存入数據时又设置了主键所造成的异常
而在我们主键的增长策略为
把该策略注释掉后问题解决。
但楼主对在使用save函数时设置主键未报出异常也仍有疑问以后理解后会再来解释。或有大神知道的话请直接留言