JPA save方法及联更新的BUG

  Jpa在save对象的时候,及联更新的当前对象外键关联的子对象,很奇怪,insertable和updatable的配置未生效,如下:

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "business_id", referencedColumnName = "serial_no", insertable = false, updatable = false)
@NotFound(action = NotFoundAction.IGNORE)
private OrderInfo orderInfo;

保存新的对象代码如下

BaseInfoRespDTO respDTO = new BaseInfoRespDTO();
OrderInfoVo queryOrder = new OrderInfoVo();
queryOrder.setSerialNo(orderOperationVo.getOrderNo());
List<OrderInfo> all = orderInfoService.findAll(queryOrder); // 1、这一步存在一个aop,脱敏相关数据
Assert.isFalse(all.isEmpty(), "订单编号不存在");

OrderOperation orderOperation = new OrderOperation();
BeanCpUtils.copyPropertiesIgnoreNull(orderOperationVo, orderOperation);
String cityCode = dynamicConstantService.getCityCode();

//售后订单服务号:险种编码+地区编码+7位数字
orderOperation.setId(Constant.COVERAGE_NUMBER + cityCode + new Random().nextInt(9999999));
orderOperation.setProcessType(ProcessType.valueOf(orderOperationVo.getOrderProcessType()));
orderOperation.setStatus(OrderOperationStatus.valueOf(orderOperationVo.getOperStatus()));
orderOperation.setCreatedBy(createBy);
orderOperation.setCreatedById(createById);
orderOperation.setCreatedTime(new Date());
orderOperation.setCityCode(cityCode);
orderOperation.setUpdateDate(new Date());
orderOperation.setBusinessId(orderOperationVo.getOrderNo());
orderOperation.setDelete(false);
OrderOperation saveData = orderOperationService.save(orderOperation);

在标记1的地方用jpa查询的数据,进行了非空判断,是经过了aop的查询,在下面保存的时候,及联更新OrderInfo表,以及下面的关联表,很奇怪insertable = false, updatable = false没有生效。

解决办法:

新增了一个方法,去掉了走aop的查询,结果不误更新了,但是其实是库里的原来的数据更新了一遍。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值