先看代码
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);
}
某个方法中的内容是这样的,按照这段代码的逻辑,是数据库不应该出现两条一模一样的数据,但是实际情况却有时候会出现插入了两条一模一样的数据.可能是并发造成的么?具体不是太懂;望高手们能帮忙解决一下;
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
并发可能造成这个问题,但是你这里写得也有问题的在
else
里面应该是update
,不是save
看数据库的主键吧,如果主键是 openId的话,应该是不会出现2条一摸一样的数据
另外,save方法里,应该是createOrUpdate的逻辑吧