When creating a new record with linked elements, it is possible to use 
sub-queries for specifying the linked elements. It is even possible, to add 
a 'sub-insert' to force OrientDB to insert the linked element in the 
sub-insert first, and then insert the main object which maintain a link to 
the single element just created before.

But why is this not possible if the linked element is a collection? 

For the example data structure:

create class Address
create property Address.street String
create property Address.city String

create class Client
create property Client.hq link Address
create property Client.subs linkset Address

I can do the following three alternatives. I can use a sub-insert for a 
single linked record (hq). And I can use a sub-query or an array of 
record-ids, since the sub-query returns an array of record-ids as well.

insert into client set name = 'client 1', hq = (insert into address set 
street = 'Long street', city = 'London')
insert into client set name = 'client 2', subs = (select from address where 
city = 'London')
insert into client set name = 'client 3', subs = [#11:6,#11:0]

What should I do to achieve the following? Actually, the two insert 
statement return two corresponding @rid. 

My goal is to create the addresses and the client object in one statement, 
since transaction is almost impossible here.

insert into client set name = 'client 4', subs = [ (insert into address set 
city = 'city 2'), (insert into address set city = 'city 3') ]

This is the error message I got:
Error: com.orientechnologies.orient.core.exception.OValidationException: 
The field 'Client.subs' has been declared as LINKSET but the value is not a 
record or a record-id

-- 

--- 
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