2016-04-23 3 views
0

Я получаю следующее исключение при попытке получить доступ к документу отношения:OrientDB ClassCastException

java.lang.ClassCastException: com.orientechnologies.orient.core.id.ORecordId cannot be cast to com.orientechnologies.orient.core.record.impl.ODocument 

через:

Collection<ODocument> field = myDoc.field("MY_FIELD_NAME"); 
     if(field != null) { 
      return field; 
     } else { 
      return Collections.emptySet(); 
     } 

Странным является то, что это happes не всегда, большую часть времени он работает как ожидалось.

ответ

0

В зависимости от того, что содержит поле, вы можете использовать интерфейс OIdentifiable вместо ODocument. Попробуйте использовать:

Collection<OIdentifiable> field = myDoc.field("MY_FIELD_NAME"); 
if(field != null) { 
    return field; 
} else { 
    return Collections.emptySet(); 
} 
+0

поле содержит коллекцию других ODocuments, его классический (би-) направленного отношения. – kerner1000

+0

К сожалению, это не очень помогает, так как мне нужен экземпляр ODocument. С OIdentifiable вы не можете многое сделать. – kerner1000

+0

Вы должны взять запись, выполнив 'identifiable.getRecord()'. Это всегда работает, если у вас есть ORecordId или ODocument. – Lvca