JPA:identifier of an instance of (entity )was altered from 数字 to null;

项目场景:

报错如下

identifier of an instance of com.pcitc.swm.pm.SolidWasteStorRec was altered from 4 to null; nested exception is org.hibernate.HibernateException: identifier of an instance of com.pcitc.swm.pm.SolidWasteStorRec was altered from 4 to null

问题描述:

在这里插入图片描述

SolidWasteStorRec solidWasteStorRecOut = storPointSWPrcDeta.getSolidWasteStorRecIn();
                StorPointInitialStock storPointInitialStock = storPointSWPrcDeta.getStorPointInitialStock();
                SolidWasteStorRec solidWasteStorRecOutResult = null;
                if (solidWasteStorRecOut !=null){
                    SolidWasteStorRec solidWasteStorRec1 = new SolidWasteStorRec();
                    solidWasteStorRecOut.setSolidWasteStorRecId(null);
                    EPBeanUtils.copyProperties(solidWasteStorRecOut,solidWasteStorRec1);
                    solidWasteStorRec1.setWeight(storPointSWPrcDeta.getFactPrcQty());
                    solidWasteStorRec1.setStorType(SWMEnum.StorTypeEnum.exWarehouse.getIndex());
                    solidWasteStorRec1.setCrtTime(new Date());
                    solidWasteStorRec1.setCrtUserCode(new UserContextUtil().getUserId());
                    solidWasteStorRec1.setCrtUserName(new UserContextUtil().getUserName());
                    solidWasteStorRec1.setOutOrInTime(new Date());
                    solidWasteStorRecOutResult = solidWasteStorRecRepository.saveAndFlush(solidWasteStorRecOut);
}

原因分析:

JPA :这个错误是由于在一个事务中更新了主键,而主键是不能被更新的.

解决方案:

再copy之前先赋值(把关联表也的entity也设为null),然后再把主键设置为空再保存

SolidWasteStorRec solidWasteStorRecOut = storPointSWPrcDeta.getSolidWasteStorRecIn();
                StorPointInitialStock storPointInitialStock = storPointSWPrcDeta.getStorPointInitialStock();
                SolidWasteStorRec solidWasteStorRecOutResult = null;
                if (solidWasteStorRecOut !=null){
                    SolidWasteStorRec solidWasteStorRec1 = new SolidWasteStorRec();
                    solidWasteStorRecOut.setCompanyHazaWaste(null);
                    solidWasteStorRecOut.setCommonSolidWaste(null);
                    solidWasteStorRecOut.setSolidWasteApply(null);
                    solidWasteStorRecOut.setHazaWasteDtl(null);
                    solidWasteStorRecOut.setPoltSource(null);
                    solidWasteStorRecOut.setSwTempStorEqp(null);
                    solidWasteStorRecOut.setWeight(storPointSWPrcDeta.getFactPrcQty());
                    solidWasteStorRecOut.setStorType(SWMEnum.StorTypeEnum.exWarehouse.getIndex());
                    solidWasteStorRecOut.setCrtTime(new Date());
                    solidWasteStorRecOut.setCrtUserCode(new UserContextUtil().getUserId());
                    solidWasteStorRecOut.setCrtUserName(new UserContextUtil().getUserName());
                    solidWasteStorRec1.setOutOrInTime(new Date());
                    EPBeanUtils.copyProperties(solidWasteStorRecOut,solidWasteStorRec1);
                    solidWasteStorRec1.setSolidWasteStorRecId(null);
                    solidWasteStorRecOutResult = solidWasteStorRecRepository.saveAndFlush(solidWasteStorRec1);
                }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值