Hi guys,

I hope I'm doing something wrong and it's not a shortcoming for the 
orientdb's functionality. I'm working on the application, which will need 
to store different objects of complex structure (objects inside of 
objects). For example, Person object may have Address object, Contacts, and 
may need to link to some other objects, etc. Sometimes these objects may go 
few levels deep. I created the class with an embedded class and it all 
works good when I run query in the console. I have to use these extra 
fields ("@type":"d", "@class":"Address") in the embedded object in order 
for the query to understand the embedded object.

Here is example of a working query:
insert into Account (company, website, address) values ('Seller 0', 
'http://www.seller0.com', {"@type":"d", "@class":"Address", "street":"1234 
Sunset Dr.", "city":"Santa Monica", "state":"CA", "zip":"90046"})

The problem I"m running into, is that I will need to do this functionality 
dynamically in Java and I have modeled my java classes to be exact as the 
classes in the database, which makes sense to me and would save a lot of 
time. However, when I serialize my Java object into JSON and create 
ODocument object from this JSON, on save() the database is not taking it. 
Here is example of one simple serialized java object:
json = 
{
    "account": "#25:0",
    "meta": {
        "created": "2016-10-03T21:10:21.77-07:00",
        "ip": "0:0:0:0:0:0:0:1",
        "contentType": "application/x-www-form-urlencoded",
        "userAgent": "PostmanRuntime/2.5.2"
    },
    "data": "firstName=Jessica&lastName=Smith"
}

When I use this logic it fails:
*ODocument d = new ODocument("RawLead").fromJSON(json);*
*d.save(); *           

I get Java error: Error: Error during saving of record with rid #-1:-1

For the above JSON I have the following "RawLead" class with embedded 
"LeadMetadata" class:


CLASS 'RawLead'

PROPERTIES

+----+-------+--------+-----------------+---------+--------+--------+----+----+-------+-------+

|#   |NAME   |TYPE    |LINKED-TYPE/CLASS|MANDATORY|READONLY|NOT-NULL|MIN 
|MAX |COLLATE|DEFAULT|

+----+-------+--------+-----------------+---------+--------+--------+----+----+-------+-------+

|0   |data   |STRING  |                 |true     |false   |true    |    |  
  |default|       |

|1   |meta   |EMBEDDED|LeadMetadata     |true     |false   |true    |    |  
  |default|       |

|2   |account|LINK    |Account          |true     |false   |true    |    |  
  |default|       |

+----+-------+--------+-----------------+---------+--------+--------+----+----+-------+-------+

CLASS 'LeadMetadata'

PROPERTIES

+----+-----------+--------+-----------------+---------+--------+--------+----+----+-------+---------+

|#   |NAME       |TYPE    
|LINKED-TYPE/CLASS|MANDATORY|READONLY|NOT-NULL|MIN |MAX |COLLATE|DEFAULT  |

+----+-----------+--------+-----------------+---------+--------+--------+----+----+-------+---------+

|0   |created    |DATETIME|                 |false    |true    |false   |  
  |    |default|sysdate()|

|1   |ip         |STRING  |                 |true     |false   |true    |7 
  |40  |default|         |

|2   |userAgent  |STRING  |                 |true     |false   |true    |1 
  |100 |default|         |

|3   |contentType|STRING  |                 |true     |false   |true    |4 
  |50  |default|         |

+----+-----------+--------+-----------------+---------+--------+--------+----+----+-------+---------+

I assume it's because I don't have the magic fields ("@type":"d", 
"@class":"Meta") in my JSON. If this is correct, I need an advise on how to 
go around it or maybe there is a different and more straight forward way of 
doing it? I was hopping that I can simply serialize my exact Java objects 
into JSON format then create ODocument and simply save it in the database. 
That would be so awesome. Please help.

Thanks,

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"OrientDB" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to