与OrientGraph的嵌套事务

时间:2016-02-04 06:30:09

标签: orientdb

我正在尝试使用与OrientGraph的嵌套事务,但它似乎无法正常工作 我的情景是

function1(){
    OrientGraph db = factory.openDatabase() ; // which will give active graph on current thread
    db.begin();

    function2();

    // save some data 
    db.commit();
}

function2(){

    OrientGraph db = factory.openDatabase() ; // which will give active graph on current thread
    db.begin();

    // save some data 

    db.commit(); // this commit is saving the data into db 

}
函数2中的

提交保存数​​据,但是它应该在外部事务上提交时提交它的嵌套事务部分

我做错了什么?

注意:我正在做db.setAutoStartTx(false);这样它就不会自动启动交易

2 个答案:

答案 0 :(得分:2)

您应该使用相同的数据库实例对象。 要自动执行此过程(并提高性能),我建议您使用com.orientechnologies.orient.core.db.OPartitionedDatabasePool类。此外,我总是建议您使用此池,因为它最大限度地缩短了获取新集合的时间,并且在多核H / W上的扩展性非常好。

答案 1 :(得分:0)

编辑

在功能2

之后尝试使用db.getRawGraph().activateOnCurrentThread()
function1(){
    OrientGraph db = factory.openDatabase() ; // which will give active graph on current thread
    db.begin();

    function2();

    db.getRawGraph().activateOnCurrentThread();

    // save some data 
    db.commit();
}