使用文档 api 在 orient db 中更新
update in orient db using document api
我正在尝试 运行 使用文档 api 进行更新插入,但找不到任何方法或简单的方法。下面是代码,每次我运行,它每次都会插入一条新记录
public class TestUpsert {
public static void main(String[] args) {
Object obj = new Object();
obj.setRpstryId("ABC");
obj.setObjId("123");
obj.setObjIdCntxtCd("456");
obj.setObjNm("XYZ");
obj.setObjDesc("text");
obj.setObjTypId("78901");
createObject(obj);
}
public static void createObject(Object obj) {
try (ODatabaseDocumentTx db = new ODatabaseDocumentTx(
"remote:localhost/abc").open("root", "admin");) {
ODocument obj = new ODocument("Object");
obj.field("rpstryId", obj.getRpstryId());
obj.field("objId", obj.getObjId());
obj.field("objIdCntxtCd", obj.getObjIdCntxtCd());
obj.field("objTypId", obj.getObjTypId());
obj.field("objNm", obj.getObjNm());
obj.field("objDesc", obj.getObjDesc());
System.out.println("Completed");
obj.save();
db.close();
} catch (Exception exception) {
exception.printStackTrace();
}
}
您首先需要通过其 ID 检索您的文档,在您的情况下我认为是 ObjId
。 There are a few ways to query the database.
List<ODocument> result = db.query(
new OSQLSynchQuery<ODocument>("select * from <table name> where ObjId = '" + obj.getObjId() + "'"));
然后检查是否有记录,如果有可以更新,然后调用save()。
if (result != null and result.size() == 1) {
// Update here
ODocument doc = result.get(0);
doc.field("rpstryId", obj.getRpstryId());
doc.field("objId", obj.getObjId());
doc.field("objIdCntxtCd", obj.getObjIdCntxtCd());
doc.field("objTypId", obj.getObjTypId());
doc.field("objNm", obj.getObjNm());
doc.field("objDesc", obj.getObjDesc());
System.out.println("Completed");
doc.save();
db.close();
} else {
System.out.println("Couldn't find the record.");
}
您可以在不检索文档的情况下更新它:
ODocument doc = new ODocument("MyClass", new ORecordId("#9:22"));
doc.field(...);
doc.save
如果记录不存在 ORecordNotFoundException
将被抛出。
我用2.1版本试过了
您可以使用此
更新您的class
//rid will be @rid of the object
db.command(new OCommandSQL("UPDATE Object SET <attribute>=<value> WHERE @rid=<rid>")).execute();
我正在尝试 运行 使用文档 api 进行更新插入,但找不到任何方法或简单的方法。下面是代码,每次我运行,它每次都会插入一条新记录
public class TestUpsert {
public static void main(String[] args) {
Object obj = new Object();
obj.setRpstryId("ABC");
obj.setObjId("123");
obj.setObjIdCntxtCd("456");
obj.setObjNm("XYZ");
obj.setObjDesc("text");
obj.setObjTypId("78901");
createObject(obj);
}
public static void createObject(Object obj) {
try (ODatabaseDocumentTx db = new ODatabaseDocumentTx(
"remote:localhost/abc").open("root", "admin");) {
ODocument obj = new ODocument("Object");
obj.field("rpstryId", obj.getRpstryId());
obj.field("objId", obj.getObjId());
obj.field("objIdCntxtCd", obj.getObjIdCntxtCd());
obj.field("objTypId", obj.getObjTypId());
obj.field("objNm", obj.getObjNm());
obj.field("objDesc", obj.getObjDesc());
System.out.println("Completed");
obj.save();
db.close();
} catch (Exception exception) {
exception.printStackTrace();
}
}
您首先需要通过其 ID 检索您的文档,在您的情况下我认为是 ObjId
。 There are a few ways to query the database.
List<ODocument> result = db.query(
new OSQLSynchQuery<ODocument>("select * from <table name> where ObjId = '" + obj.getObjId() + "'"));
然后检查是否有记录,如果有可以更新,然后调用save()。
if (result != null and result.size() == 1) {
// Update here
ODocument doc = result.get(0);
doc.field("rpstryId", obj.getRpstryId());
doc.field("objId", obj.getObjId());
doc.field("objIdCntxtCd", obj.getObjIdCntxtCd());
doc.field("objTypId", obj.getObjTypId());
doc.field("objNm", obj.getObjNm());
doc.field("objDesc", obj.getObjDesc());
System.out.println("Completed");
doc.save();
db.close();
} else {
System.out.println("Couldn't find the record.");
}
您可以在不检索文档的情况下更新它:
ODocument doc = new ODocument("MyClass", new ORecordId("#9:22"));
doc.field(...);
doc.save
如果记录不存在 ORecordNotFoundException
将被抛出。
我用2.1版本试过了
您可以使用此
更新您的class//rid will be @rid of the object
db.command(new OCommandSQL("UPDATE Object SET <attribute>=<value> WHERE @rid=<rid>")).execute();