我正在尝试使用与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);这样它就不会自动启动交易
答案 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();
}