首页 > 其他分享 >saveBatch时 遇到Duplicate entry '1828978156126666754' for key

saveBatch时 遇到Duplicate entry '1828978156126666754' for key

时间:2024-08-29 10:25:42浏览次数:8  
标签:assetsLedger saveBatch residueNum AssetLedger Duplicate 1828978156126666754 key 

问题:saveBatch时 遇到Duplicate entry '1828978156126666754' for key

分析:1.检查数据库里是否有重复ID

           2.检查代码中是否有id赋值

          3.

             以上排查都没发现问题,以下代码分析了一下,为了节省空间,我在for循环上面new了一个封装类,

             执行for时,把封装类放到了数组,但是数组里放的其实都是同一个对象,这样saveBatch的时候,第一次执行成功时,

            会把id写回该对象,同时list中元素的id值,也将被改变为同一个。

解决:

           放入List中的元素,要保证是不同的对象

 

错误代码:

AssetLedger assetsLedger = new AssetLedger();
                        assetsLedger.setBrand(brand);
                        assetsLedger.setModel(model);
                        assetsLedger.setAssetsName(assetsName);
                        assetsLedger.setPriority(1);
                        BeanUtil.packAddBaseProps(assetsLedger, request);
                        if (entryNum > residueNum) {
                            entryNum -= residueNum;
                            assetsEntryService.reduceResidueNum(assetEntryVO.getId(), residueNum);
                            for (int j = 0; j < residueNum; j++) {
                                assetsLedger.setEntryId(assetEntryVO.getId());
                                assetsLedger.setReceiveId(receifeId);
                                assetsLedger.setState(LedgerStateEnum.RECIVE.getValue());
                                assetsLedger.setUserId(assetReceifeDTO.getReceiveUser());
                                assetsLedger.setNumber(1);
                                assetsLedger.setId(null);
                                assetsLedgers.add(assetsLedger);
                            }
                        } 

assetLedgerService.saveBatch(assetsLedgers);

正确代码:

for (int j = 0; j < residueNum; j++) {
                                AssetLedger assetsLedger = new AssetLedger();
                                assetsLedger.setBrand(brand);
                                assetsLedger.setModel(model);
                                assetsLedger.setAssetsName(assetsName);
                                assetsLedger.setPriority(1);
                                BeanUtil.packAddBaseProps(assetsLedger, request);
                                assetsLedger.setEntryId(assetEntryVO.getId());
                                assetsLedger.setReceiveId(receifeId);
                                assetsLedger.setState(LedgerStateEnum.RECIVE.getValue());
                                assetsLedger.setUserId(assetReceifeDTO.getReceiveUser());
                                assetsLedger.setNumber(1);
                                assetsLedger.setId(null);
                                assetsLedgers.add(assetsLedger);
                            }

 

标签:assetsLedger,saveBatch,residueNum,AssetLedger,Duplicate,1828978156126666754,key,
From: https://www.cnblogs.com/charkey/p/18386092

相关文章

  • 【已解决】Vue Duplicate keys detected: ‘[object Object]’
    【已解决】VueDuplicatekeysdetected:‘[objectObject]’在Vue项目开发过程中,我们可能会遇到这样的报错:“Duplicatekeysdetected:‘[objectObject]’.Thismaycauseanupdateerror.”。这个错误通常发生在Vue的虚拟DOM进行渲染更新时,如果检测到重复的key值,就......
  • SFTP一键添加脚本 (Duplicated 2024-07-15 12:39:10)
    創建腳本vimonekey_for_sftpuser.sh腳本內容#!/bin/bash#获取当前日期和时间CURRENT_DATE=$(date'+%Y年%m月%d日%H:%M:%S')echoecho"——————————————————————————————————————————————————————"echo"••......
  • SFTP一键添加脚本 (Duplicated 2024-07-15 12:39:10)
    創建腳本vimonekey_for_sftpuser.sh腳本內容#!/bin/bash#获取当前日期和时间CURRENT_DATE=$(date'+%Y年%m月%d日%H:%M:%S')echoecho"——————————————————————————————————————————————————————"echo"••......
  • 基于springboot用“异常处理器“捕获解决“数据库信息录入重复“的问题“SQLIntegrity
    前言 当我们编写后端时,会遇到一个问题,那就是:假如A用户向我们的数据库录入完登录信息后(姓名,账号等),B用户同样采用了一个相同的姓名提交了登录信息,那这个时候就不满足username的唯一约束,此时数据库就会报错例如报错如下:Duplicateentry'····'forkey'····'提示......
  • 83. Remove Duplicates from Sorted L
    Giventheheadofasortedlinkedlist,deleteallduplicatessuchthateachelementappearsonlyonce.Returnthelinkedlistsortedaswell.Example1:Input:head=[1,1,2]Output:[1,2]Example2:Input:head=[1,1,2,3,3]Output:[1,2,3]......
  • gorm实现MySQL的INSERT INTO ... ON DUPLICATE KEY UPDATE差异化插入和更新
    比如插入f_create_uid,更新时忽略f_create_uid,只更新f_update_uid。可使用gorm的BeforeCreate和BeforeUpdate钩子,这两个钩子分别在创建和更新记录之前被调用。//BeforeCreate在创建记录之前调用func(dob*MyStruct)BeforeCreate(tx*gorm.DB)(errerror){dob......
  • 解决Unchecked runtime.lastError: Cannot create item with duplicate id meterSpher
    uncheckedruntime.lasterror:cannotcreateitemwithduplicateidXXX谷歌浏览器扩展插件开发问题_chromeuncheckedruntime.lasterror:cannotcreate-CSDN博客javascript-IssueswithContentMenuandOpeningTabs-ChromeExtension-StackOverflowchrome.run......
  • 秒杀removeDuplicates问题(Golang版本)
    周末食欲不振,拿一道简单难度的题找找感觉,题目如下:Givenanintegerarraynumssortedinnon-decreasingorder,removetheduplicatesin-placesuchthateachuniqueelementappearsonlyonce.Therelativeorderoftheelementsshouldbekeptthesame.Thenreturn......
  • 猫头虎分享已解决Bug | org.springframework.dao.DuplicateKeyException异常的正确解
    博主猫头虎的技术世界......
  • mybatis plus saveBatch报错问题
    sessionRecordHumanService.saveBatch(dataList);具体报错如下:org.mybatis.spring.MyBatisSystemException:nestedexceptionisorg.apache.ibatis.exceptions.PersistenceException: ###Errorupdatingdatabase.Cause:java.lang.IllegalArgumentException:MappedSta......