OrientDB - 数据库对象未与当前线程同步
OrientDB - database object not syncronized with current thread
我在 Java 中遇到 OrientDB ODatabaseDocument 对象的严重问题。
为了防止 ODatabaseDocument 对象(templateDb)和当前线程之间的不同步,在关闭连接之前,我用 activateOnCurrentThread 强制同步,但是当我关闭连接时,我总是得到以下错误:
java.lang.IllegalStateException: Current database instance (com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx@302a2a53) is not active on current thread (Thread[btpool0-3,5,main]). Current active database is: com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx@2040c7d9
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.checkIfActive(ODatabaseDocumentTx.java:3138)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.command(ODatabaseDocumentTx.java:667)
我的代码:
finally {
if (!templateDb.isActiveOnCurrentThread()) {
templateDb.activateOnCurrentThread();
}
templateDb.close();
}
编辑
String connectionUrl = customer.getDbName();
if (!connectionUrl.startsWith("remote:")) {
connectionUrl = storageConnectionPrefix + connectionUrl;
}
try {
ODatabaseDocumentTx g = new ODatabaseDocumentTx(connectionUrl);
g.activateOnCurrentThread();
g.open(username, password);
g.begin();
return g;
} catch (Exception e) {
e.printStackTrace();
}
在 orientDB 2.1 版中,您必须显式 activateOnCurrentThread
与您的 DB 对象相关。尝试如下:
templateDb.activateOnCurrentThread();
我在 Java 中遇到 OrientDB ODatabaseDocument 对象的严重问题。
为了防止 ODatabaseDocument 对象(templateDb)和当前线程之间的不同步,在关闭连接之前,我用 activateOnCurrentThread 强制同步,但是当我关闭连接时,我总是得到以下错误:
java.lang.IllegalStateException: Current database instance (com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx@302a2a53) is not active on current thread (Thread[btpool0-3,5,main]). Current active database is: com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx@2040c7d9
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.checkIfActive(ODatabaseDocumentTx.java:3138)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.command(ODatabaseDocumentTx.java:667)
我的代码:
finally {
if (!templateDb.isActiveOnCurrentThread()) {
templateDb.activateOnCurrentThread();
}
templateDb.close();
}
编辑
String connectionUrl = customer.getDbName();
if (!connectionUrl.startsWith("remote:")) {
connectionUrl = storageConnectionPrefix + connectionUrl;
}
try {
ODatabaseDocumentTx g = new ODatabaseDocumentTx(connectionUrl);
g.activateOnCurrentThread();
g.open(username, password);
g.begin();
return g;
} catch (Exception e) {
e.printStackTrace();
}
在 orientDB 2.1 版中,您必须显式 activateOnCurrentThread
与您的 DB 对象相关。尝试如下:
templateDb.activateOnCurrentThread();