大博主 2017-10-31 08:49 采纳率: 38.9%
浏览 1401

怎么对在congtroller进行事务的控制,或者在其他层进行事务的控制,

现在我要对2个表进行插入,先插入了第一张表,用第一张表执行的结果对第二个表进行插入,可以第一个成功了,但是第二个失败了,怎么处理?
现在的我想做的是2张表要么一起插入成功,要么第一张插入成功了,第二个失败了,就把第一个回滚

  • 写回答

7条回答 默认 最新

  • 小技术员 2017-10-31 09:04
    关注

    看你用的是什么ORM,不过原理都是是类似的,你可以手动参与,
    sqlSession = sqlSessionFactory.openSession(); //开始
    id = lightControlMapper.insert(lightControl);
    LightResult lr = new LightResult();
    lr.setLightID(Integer.valueOf(entityID));
    lr.setResult("updating");
    lr.setCreateTime(new Timestamp(System.currentTimeMillis()));
    lr.setControlType("setAutoMode");
    lr.setData(lighting_status);
    lr.setLightControlID(lightControl.getId());
    lightResultMapper.insert(lr);
    Destination destination = new ActiveMQQueue(mk_light_control);
    jmsTemplate.convertAndSend(destination, String.valueOf(id));
    sqlSession.commit(); //结束

            这里我用的是mybatis的手动控制,你看下,我也是先插第一张表,再通过第一张表自动生成的ID,来插入第二张表,如果第一张表失败了,事务就会回滚
            hibernate也应该是类似 的,我已经很久没用了
    
    评论

报告相同问题?

悬赏问题

  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 划分vlan后不通了
  • ¥15 GDI处理通道视频时总是带有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大