事务问题

({POST.})
() {
    UploadFile uf = .getFile()File file = uf.getFile()Model<Strategy> model = {
        model = FileUtil.(fileModel.)} (Exception e) {
        renderJson()}
    Strategy[] stas = model.getTs()tx = Db.(IAtom() {
        () SQLException {
            {
                Db.(+ Global.TableName..getTableName())i = / Db.(Arrays.()Integer.)} (Exception e) {
                }
            }
    })(!tx) {
        renderJson()}
    renderJson()}

一直以为自己的事务是有效的,昨天特意试了一下,如上代码中用除0制造了一个异常,异常中返回false,可是事务并没有回滚,依然提交了,导致文件导入的时候表清空了,但是新的数据并没有保存进去。请问波总,这是怎么回事?不是说返回true提交事务,false回滚不提交的吗?另一种不捕捉异常往外抛的方式也尝试过,还是没有回滚。事务问题一直没解决,导致程序对数据的操作一直不太安全

评论区

JFinal

2018-06-26 11:54

代码是乱的,点击工具栏的 “代码语言” 代码 copy 进去即可

陈本布衣

2018-06-26 18:33

@Before({POST.class})
public void importStrategy() {
UploadFile uf = this.getFile("file");
File file = uf.getFile();
Modelmodel = FileUtil.convertObject(file, Model.class);
final Strategy[] stas = model.getTs();
boolean tx = Db.tx(new IAtom() {
@Override
public boolean run() throws SQLException {
try {
Db.update("truncate table test");
int i = 1/0;
Db.batchSave(Arrays.asList(stas), Integer.MAX_VALUE);
} catch (Exception e) {
return false;
}
return true;
}
});
if (!tx) {
renderJson(false, "文件导入出错!");
return;
}
renderJson(true, "导入告警规则成功");
}


以上是代码,不好意思没有找到哪里有工具栏

JFinal

2018-06-26 21:36

@陈本布衣 进入这个页面:
http://www.jfinal.com/my/feedback/add

然后注意看编辑器中的 html 图标旁边的那个代码语言下拉框

热门反馈

扫码入社