1
我試圖堅持以下JSON,JSON場陣列插入OrientDB
{
"kind": "plus#person",
"etag": "\"Sh4sdfsdfdfWv7jTXojqc/WnNi6ckHr4lXu1JzlY3Rz_GYpM8\"",
"emails": [
{
"value": "[email protected]",
"type": "account"
}
],
"objectType": "person",
"id": "10209236048995686597",
"displayName": "joe garry",
"name": {
"familyName": "Joe",
"givenName": "Garry"
},
"isPlusUser": false,
"language": "en",
"verified": false,
"domain": "gmail.com"
}
模式創建如下,
OClass profile = schema.createClass("profile").setSuperClass(vClass);
ProfileEnum[] profProps = ProfileEnum.values();
for (int i = 0; i < profProps.length; i++) {
profile.createProperty(profProps[i].name, profProps[i].otype);
}
OClass mail = schema.createClass("profileMails").setSuperClass(vClass);
ProfileEnum.EMails[] emailProps = ProfileEnum.EMails.values();
for (int i = 0; i < emailProps.length; i++) {
mail.createProperty(emailProps[i].name, emailProps[i].otype);
}
profile.createProperty("emails", OType.EMBEDDEDLIST, mail);
OClass name = schema.createClass("GOAuthPeopleName").setSuperClass(vClass);
ProfileEnum.Name[] nameProps = ProfileEnum.Name.values();
for (int i = 0; i < nameProps.length; i++) {
name.createProperty(nameProps[i].name, nameProps[i].otype);
}
profile.createProperty("name", OType.EMBEDDED, name);
插入JSON實現,
try (ODatabaseDocumentTx db = documentService().getTx()) {
ODocument doc = new ODocument("profile").fromJSON(indvidual.getProfileJSON());
doc.save();
}
上面插入拋出以下錯誤,
字段'profile.emails'已被聲明爲EMBEDDEDLIST,但使用了不兼容的類型。值:{[email protected],type = account}
這段代碼有什麼問題?如果emails
文件不存在於JSON中,則插入工作。