Reputation: 191
I am trying to persist following JSON,
{
"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"
}
Schema creation is as follows,
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);
Insert JSON implementation,
try (ODatabaseDocumentTx db = documentService().getTx()) {
ODocument doc = new ODocument("profile").fromJSON(indvidual.getProfileJSON());
doc.save();
}
Above insertion is throwing following Error,
The field 'profile.emails' has been declared as EMBEDDEDLIST but an incompatible type is used. Value: {[email protected], type=account}
What is wrong with this code? Insertion work if emails
files is not present in JSON.
Upvotes: 1
Views: 135
Reputation: 191
After adding @type : “d” and @class in json I was able to insert,
{
"@type" : "d",
"@class": "profileMails",
"value": "[email protected]",
"type": "account"
}
Upvotes: 2