和Java狼狈为奸 2019-05-10 14:12 采纳率: 50%
浏览 1556

Spring Data Jpa 加了 @Transactional事物注解后数据异常

代码如下:

@Transactional
public void addAdminRole(String roleIdsStr, Long userId) {
    if (StringUtils.isBlank(roleIdsStr)) {
        throw new BusinessException(ResultCodeEnum.PARAMETER_ERROR);
    }
        // 重点是这里,在此处我只是查询了一个CommonAdmin这个实体,然后再没对这个实体做过任何curd操作,但执行完addAdminRole这个方法后,CommonAdmin数据却发生了变化
    CommonAdmin ca = commonAdminService.getOne(userId);
    if (ca == null || ca.getStatus() != CommonStatusEnum.ENABLE.getCode()) {
            throw new BusinessException(ResultCodeEnum.USER_DISABLE);
    }
        // 先删除原来的角色
    this.removeAdminAllRole(userId);
    String[] roleIds = roleIdsStr.split(",");
    List<AdminRole> list = new ArrayList<>(roleIds.length);
    AdminRole a;
    for (String s : roleIds) {
        a = new AdminRole();
        a.setId(IDGen.getId());
        a.setAdminUserId(userId);
        a.setRoleId(Long.valueOf(s));
        a.setCreateTime(System.currentTimeMillis());
        a.setStatus(CommonStatusEnum.ENABLE.getCode());
        a.setUpdateTime(System.currentTimeMillis());
        list.add(a);
    }
    this.adminRoleDao.saveAll(list);
}

其中getOne方法如下:

public CommonAdmin getOne(Long id) {
        CommonAdmin u = commonAdminDao.findById(id).get();
        u.setCertification("");
        return u;
}
  • 写回答

1条回答 默认 最新

  • 小达哥的垃圾桶 2019-05-10 14:23
    关注

    是不是对数据库表加了触发器

    评论

报告相同问题?

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?