在OrientDB3.0.33中,我基于PythonOGM示例中的传感器示例创建了一个带有二进制字段的类。使用以下代码时(或多或少与此处相同)
ODocument doc = new ODocument("Sensor");
doc.field("name", "Test");
doc.field("zone", "z1");
OBlob record;
record = db.newBlob("Binary Data".getBytes()); // Files.readAllBytes(fileLocation));
record.save();
doc.field("photo", record);
引发以下异常
Exception in thread "main" java.lang.IllegalArgumentException: Cannot parse binary as the same type as the value (class=com.orientechnologies.orient.core.record.impl.ORecordBytes): #3:6[66, 105, 110, 97, 114, 121, 32, 68, 97, 116, 97] v1
at com.orientechnologies.orient.core.serialization.serializer.OStringSerializerHelper.getBinaryContent(OStringSerializerHelper.java:997)
at com.orientechnologies.orient.core.metadata.schema.OType.convert(OType.java:331)
at com.orientechnologies.orient.core.record.impl.ODocumentHelper.convertField(ODocumentHelper.java:239)
at com.orientechnologies.orient.core.record.impl.ODocument.field(ODocument.java:1463)
at com.orientechnologies.orient.core.record.impl.ODocument.field(ODocument.java:1294)
at test.App.main(App.java:32)
这大致说明我无法将orecordbytes对象Map到二进制字段中。
当然,如果我只是在一个未知类(即无模式持久性)上编写一个odocument,它就可以工作了。
正确的模式类型是什么?
暂无答案!
目前还没有任何答案,快来回答吧!