关于 事务 的一个问题,想不到 解决方法,求助+

开启事务一般这么搞。如果失败 就return false;

  Db.tx(new IAtom() {
    @Override
    public boolean run() throws SQLException {
      return false;
    }
  });

但是,比如 我们系统 中是通过 状态码(错误码)来判断是什么错的。在其他action中 状态码能够轻轻松松的返回。 但是如果 在事务中,,有 多个操作,每个操作失败,都要 有个状态码返回,以此来判断 是什么错误。

不考虑 抛异常的方式,因为 要定义的异常类太多了。

评论区

杜福忠

2017-04-15 14:26

用拦截器啊 ActiveRecord 支持声名式事务 手册5.5章处

杜福忠

2017-04-15 14:47

还可以这样啊 :
public void testIAtom(){
final Ret ret = Ret.create("什么码?", "我不知道啊");
boolean tx = Db.tx(new IAtom(){
@Override
public boolean run() throws SQLException {
//操作1
ret.put("什么码?", "错误1");
//操作2
ret.put("什么码?", "错误2");
//操作3
ret.put("什么码?", "错误3");
//操作4
ret.put("什么码?", "错误4");
try {
//操作5

} catch (Exception e) {
ret.put("什么码?", "错误5");
return false;
}
return true;
}});
ret.put("成功没有?", tx);
renderJson(ret.getData());
System.out.println(tx);
System.out.println(ret.toString());
}

sruz

2017-04-16 17:08

@杜福忠 嗯嗯,,3Q,,,

热门反馈

扫码入社