猿问

数据库插入代码的问题

先看代码


WxUser wxUser = wxUserRepository.findByOpenId(openId);

        if (wxUser == null) {

            wxUser = new WxUser();

            wxUser.setPoints(points);// 首次积分

            wxUser.setFirstExchange(true);

            wxUser.setOpenId(openId);

            wxUser.setWxName("");

            wxUser.setWxImgUrl("");

            wxUser = wxUserRepository.save(wxUser);

        } else {

            wxUser.setPoints(points);// TODO: 2016-10-18

            wxUser = wxUserRepository.save(wxUser);

        }

某个方法中的内容是这样的,按照这段代码的逻辑,是数据库不应该出现两条一模一样的数据,但是实际情况却有时候会出现插入了两条一模一样的数据.可能是并发造成的么?具体不是太懂;望高手们能帮忙解决一下;


qq_笑_17
浏览 324回答 2
2回答

缥缈止盈

并发可能造成这个问题,但是你这里写得也有问题的在else里面应该是update,不是save

九州编程

看数据库的主键吧,如果主键是 openId的话,应该是不会出现2条一摸一样的数据另外,save方法里,应该是createOrUpdate的逻辑吧
随时随地看视频慕课网APP

相关分类

Java
我要回答