儿童财产中的ODocument与ORecord

时间:2018-06-13 22:54:12

标签: orientdb

我们目前正在尝试迁移到OrientDB 3.0.2。我们有一些在2.2.x中工作但在3.x中不起作用的代码。有问题的代码大致如下:

 Map<String, ODocument> children = doc.getProperty("childMap");
 ODocument childDoc = children.get("someKey");

这引发了以下异常:

 java.lang.ClassCastException: 
 com.orientechnologies.orient.core.sql.executor.OResultInternal 
 cannot be cast to 
 com.orientechnologies.orient.core.record.impl.ODocument

然后,我们更新了代码以使用OResult接口,并使用toElement()来获取OElement实例。但是,此代码在多个地方使用,在测试中我们得到以下异常:

 java.lang.ClassCastException: 
 com.orientechnologies.orient.core.record.impl.ODocument
 cannot be cast to 
 com.orientechnologies.orient.core.sql.executor.OResult

我们很难说儿童地图何时可能包含ODocument以及何时可能包含OResult。在我们的数据库中,我们必须使用大致相同结构的类,除了在子映射中的一个是EMBEDDEDMAP而在另一个情况下它是LINKMAP的事实。这可能是区别吗? EMBEDDEDMAP会返回一个而LINKMAP会返回另一个吗?在orient db 2.x中,返回类型不依赖于子属性的映射类型。似乎这些类没有共同的接口,所以我想我们需要编写一些分支逻辑来处理这两种情况,我们只是不确定逻辑是什么。

任何人都可以对此有所了解吗?

0 个答案:

没有答案