我正在使用Orient DB Document模型。我保存文档的代码 -
private ODocument saveDocument(ODocument document) {
ODatabaseRecordThreadLocal.INSTANCE.set(database);
return document.save();
}
我们从某些类型创建类,并且在运行时创建一些Document类,因此无方案。
当ODocument属于已在模式中定义的类时,保存代码可以正常工作。示例我们有一个Status模式 -
schema.createClass("Status");
所以如果我这样做
document = new ODocument("Status");
save(document)
然后上面的代码工作正常。
但如果我这样做
doument = new ODocument("RawData");
save(document)
然后我得到OSchemaException
-
Record saved into cluster collectionfile should be saved with class CollectionFile but saved with class RawData
其中CollectionFile是我数据库中的其他Schema。我的问题是为什么Orient试图将RawData文档保存在其他集群中。
P.S:当我在我的应用程序中使用单个数据库时,这段代码工作正常。然后我改为多DB方法,我的应用程序中有两个数据库实例。
感谢您的帮助。
答案 0 :(得分:0)
您应该在多个dbs的情况下设置要使用的当前数据库,并使用:
ODatabaseRecordThreadLocal.INSTANCE.set( database2 );
请注意:http://www.orientechnologies.com/docs/last/Java-Multi-Threading.html