1..9源码多数据库事务不成功

hellboy126 发布于 2014/11/21 15:44
阅读 136
收藏 0

@JFinal 你好,想跟你请教个问题:

     //@TxConfig("configName")   这个要写死,要是动态传进去也可以

    @Before(Tx.class)
    public void add() throws Exception{

        System.out.println("测试:test");
        //第一种Db
        Record r=new Record();
        r.set("key1", "key1测试");
        r.set("value1", "value1测试");
        r.set("memo", "测试");
        Db.use(loginConfigName()).save("aioerp_sys", r);
        
        //第二种model
        /*AioerpFile r=new AioerpFile();
        r.set("key1", "key1测试");
        r.set("value1", "value1测试");
        r.set("memo", "测试");
        r.save(loginConfigName());*/
        
        
        int aa=0;
        int bb=8;
        int dd=bb/aa;

        
        setAttr("statusCode", AioConstants.HTTP_RETURN200);
        setAttr("navTabId", "sell_info");
        
        renderJson();
    }


  结果: 数据保存到我指写的数据库里去了,但处理事务获取连接回滚的是 默认的main数据库。导致事务不成功。

加载中
0
台俊峰
台俊峰

 Tx只在默认的数据源上加事务的,通过@TxConfig可以配置指定的数据源。

如果你想多个数据源一起开启事务,需要你自己扩展一个类似Tx这样的Interceptor,在你自定义的Inteceptor里将你要开启事务的数据源都开启事务,参照Tx的代码去写。或者你也可以再自定义一个类似TxConfig这样的注解,支持多个值,配置要开事务的数据源。

台俊峰
台俊峰
那你就在自定义的事务拦截器里查询到各个数据源名称,然后都开启事务。
hellboy126
hellboy126
这个数据源又是从数据库里面查出来,注解里面传过去的是枚举类型的
0
JFinal
JFinal
多数源的事务支持本质上属于分布式事务的范畴,JFinal 目前不支持。JFinal 目前只支持某一个数据源事务的正确性,跨数据源事务未来如果有极简设计出来一定会支持
返回顶部
顶部