我在一个班级中有一个OType.LINKLIST
字段children
。
我可以使用以下命令更新它:
update <parent_rid> add children = <child_rid>
但我不知道如何在不使用SQL的情况下做到这一点,这是我的目标。
ODocument doc=new ODocument("ClassA");
ODocument parentDoc=db.load(new ORecordId(rid));
如何在不使用SQL的情况下将doc
添加到parentDoc
的字段children
?
答案 0 :(得分:2)
create class Doc
create class ParentDoc
create property ParentDoc.children LINKLIST
insert into Doc set name = 'doc1' #12:0
insert into Doc set name = 'doc2' #12:1
insert into ParentDoc set name = 'pd', children = [#12:0] #13:0
update #13:0 add children = #12:1
根据我的理解,您需要一段代码,用Java Document API替换最后四个命令。
try (ODatabaseDocument db = new ODatabaseDocumentTx("remote:localhost/DB")) {
db.open("admin", "admin");
ODocument doc1 = new ODocument("Doc");
doc1.field("name", "doc1");
doc1.save();
List<OIdentifiable> linklist = new ArrayList();
linklist.add(doc1);
ODocument parent = new ODocument("ParentDoc");
parent.field("children", linklist, OType.LINKLIST);
parent.save();
// ...
ODocument doc2 = new ODocument("Doc");
doc2.field("name", "doc2");
doc2.save();
List children = parent.field("children");
children.add(doc2);
parent.field("children", children);
parent.save();
}