美文网首页
开发过程中遇到的堆栈问题

开发过程中遇到的堆栈问题

作者: zhy0324 | 来源:发表于2019-11-30 17:04 被阅读0次

今天在开发的的时候遇到了一个灵异事件,我在做停车子系统的vip车辆下发,代码如下

    @Override
    @Transactional
    public boolean insert(FixedCarDto model) {
        List<CarParkSpaceDto> carParkSpaceDtos = model.getCarParkSpaceDtos();
        List<FixedCarDto> issuedList = new ArrayList<>();
        carParkSpaceDtos.forEach(carParkSpaceDto -> {
            ...
            fixedCarService.insert(model);
            issuedList.add(model);
        });
        subsystemIssuedFixedCarManager.issuedVipOrFixedCar(issuedList);
        return true;
    }

然后我碰到了一个问题,就是我issuedList中的model的id都是同一个,很疑惑的是,明明我已经把每一个model都setId了,怎么id还是同一个。返回去查数据库,明明是新增了很多条,id也不一样。怎么会出现这种问题

猛然发现,issuedList中存放的是model的栈地址,并不是model的数据对象,model是在循环外面就有的,所以第一次第二次存放进issuedList的都是同一个地址,最终的list里的每一个model的值都会是最后一次修改时的值。

这里的误区是因为持久化新增数据库,觉得数据库的数据不一样,每个model的数据也会不一样,其实持久化的时候,就将数据持久化到了硬盘上。

然后就修改了代码

    @Override
    @Transactional
    public boolean insert(FixedCarDto model) {
        List<FixedCarDto> issuedList = new ArrayList<>();
        carParkSpaceDtos.forEach(carParkSpaceDto -> {
            ...
            fixedCarService.insert(model);
            //创建新对象接收老对象,否则两次添加的model都是同一个model栈地址,第二次model的值改变会改变list里所有的model的值
            FixedCarDto issuedModel = BeanUtils.convert(model,FixedCarDto.class);
            issuedList.add(issuedModel);
            //下发子系统
        });
        subsystemIssuedFixedCarManager.issuedVipOrFixedCar(issuedList);
        return true;
    }

通过一个新对象去接收model,然后放入list,问题解决。

相关文章

  • 开发过程中遇到的堆栈问题

    今天在开发的的时候遇到了一个灵异事件,我在做停车子系统的vip车辆下发,代码如下 然后我碰到了一个问题,就是我is...

  • 谈谈iOS获取调用链

    本文由云+社区发表 iOS开发过程中难免会遇到卡顿等性能问题或者死锁之类的问题,此时如果有调用堆栈将对解决问题很有...

  • 谈谈iOS获取调用链

    iOS开发过程中难免会遇到卡顿等性能问题或者死锁之类的问题,此时如果有调用堆栈将对解决问题很有帮助。那么在应用中如...

  • Unreal Mode模式调用堆栈

    此文章,主要是为了记录,在开发模式的插件(无图标)中,遇到的一些问题,调用堆栈过程中查看的函数层级关系。模式这块的...

  • 上线App崩溃 : Crash日志收集, 分析, 处理

    前言 项目开发时, 遇到崩溃问题, 可以通过控制台log看到调用堆栈, 从而找到问题所在, 但上线项目如何解决Ap...

  • 开发过程中遇到的问题

    try catch 在接口中使用注意 使用 try catch 的使用无论是在 try 中的代码还是在 catch...

  • 微信小程序开发常见问题及解决方案

    我们在做微信小程序开发的过程中,总会遇到各种奇葩的问题。今天就把我在小程序开发过程中遇到的各种问题,及对应的解决方...

  • 评审手机端开发手记

    记录开发专家评审过程中手机端遇到的相关问题 -----------------------------------...

  • 微信小程序云开发云函数常见问题及解决方案

    我们在做微信小程序云开发的过程中,总会遇到各种奇葩的问题。今天就把我在小程序云开发过程中遇到的各种问题,及对应的解...

  • 关于java.lang.VerifyError: Verifie

    在开发过程中遇到一个比较奇怪的异常崩溃,错误堆栈信息如下: 从网上找到了一些信息,有说是gradle版本低了[ht...

网友评论

      本文标题:开发过程中遇到的堆栈问题

      本文链接:https://www.haomeiwen.com/subject/cugowctx.html