工作笔记系列-报主键列重复

  遇到的第一个问题:

        页面保存数据的时候总是报主键列重复的问题

     问题解决的过程和思路:

  我们在service层使用了事物:

     

  Service

    Transacation

      Dao

        我在这个位置使用循环execute操作了多个对象

      endDao

     endTransacation   //这里报错

  endService

  

  总结:

  因为dao层执行execute方法的时候  被事物所包裹,所以它会将这个对象先放到session级别的缓存。 

     我execute了两次   它就存了两个对象。    这两个对象的主键列一样.

  这样 在提交事务的时候:   两个对象的主键列是一样的。   所以就报了主键重复的错误.

  解决方案:

  在execute完一次后调用flush方法. 这个方法将会把session级别的缓存对象保存到数据库.  下次再操作同一个对象就不会报错了。

原文地址:https://www.cnblogs.com/dingzb/p/3677844.html