java - OrientDB - 数据库对象与当前线程不同步

标签 java orientdb orientdb-2.1

我在使用 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。尝试如下:

templateDb.activateOnCurrentThread();

关于java - OrientDB - 数据库对象与当前线程不同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35171945/

相关文章:

java - 泛型类中的 hibernate 继承

java - 从文本文件中解析数字

java - OrientDB:删除使用对象 API 创建的记录和引用

java - OrientDB 创建顶点类型

java - 在 DB 与内存中搜索数据时的性能

android - 在android中获取mp3持续时间

orientdb - 托管许多东方数据库的最佳方式

golang请求Orientdb http接口(interface)报错

java - OrientDb 事务错误