Grails 2.4.3。多个数据源。发生错误时如何回滚事务?

时间:2016-08-26 21:22:16

标签: grails groovy transactions multiple-databases

假设以下情况..

  • 我在DataSource.groovy中声明了三个不同的数据源(datasource,datasource_b和datasource_c)。
  • 我有三个使用这些数据源的不同域对象。
  • 在我的Controller中,我从一个服务中调用一个方法,在该服务中我保存了对象a,b和c。我需要,如果发生错误,它们都不会被保存。

所以:

DataSource.groovy中

environments {
    development {
        dataSource {
            [...]
        }
        dataSource_b {
            [...]
        }
        dataSource_c {
            [...]
        }
    }
}

ObjectA.groovy

    class ObjectA{

    [...]

    static mapping = {
        //use default datasource
    }

}

ObjectB.groovy

    class ObjectB{

    [...]

    static mapping = {
        datasource 'b'
        [...]
    }

}

ObjectC.groovy

class ObjectC{

    [...]

    static mapping = {
        datasource 'c'
        [...]
    }

}

MyService.groovy

public savingObjects(ObjectA a,ObjectB b,ObjectC c){ 
    a.save()
    b.save()
    c.save()
}

我正在使用Grails 2.4.3并且我知道服务中的方法是Transaccional,但是,例如,如果我在保存时发生错误,那么' a' a'和' b'没有任何刷新保存(保存刷新:true)。

有任何想法纠正这种行为吗? 我想避免使用XA数据源。

谢谢!

0 个答案:

没有答案