问题:利用SpringBoot写业务做批量新增时,批量插入报主键冲突的异常!
解决方法1:在利用实体批量新增时,把用于设置新增数据的实体放在循环代码块里面即可。如果把声明的实体放在循环体外面的话,新增一条数据后会把当前新增的数据返回到声明的实体内,所以循环第二条新增语句时,实体中多出了一个主键,故会报sql异常的主键冲突错误。
如图错误示例:
正确写法:
解决方法2:查看数据库内,要新增数据的这张表是否设置了主键自增长
解决方法3:如果是用逆向工程生成的实体,查看要新增数据的那张表主键位置否设置完整,如下。
@Id @Column(name = "`rolefunctionid`") @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer rolefunctionid;