和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
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况
  • ¥15 画两个图 python或R