OrientDB问题......
有人知道如何在插入后获取recordId:
db.save(person)
我在下面尝试了人物POJO:
@Id
private Object id;
但保存后id字段为null。我用Google搜索并用谷歌搜索无济于事。我只需要插入一个对象,然后获取orientdb生成的记录。
答案 0 :(得分:3)
在pojo中定义字段:
@Id
private Object rid;
public Object getRid() {
return rid;
}
保存时:
YourClass proxy = db.save(yourClassInstance);
Object rid = proxy.getRid();
答案 1 :(得分:2)
这里的代码很简单:
//insertquery will be the sql statement you want to insert
ODocument result=db.command(new OCommandSQL(insertquery)).execute();
System.out.println(result.field("@rid"));
答案 2 :(得分:1)
我使用ODocuments代替POJO(适用于我的项目)。代码示例:
ODatabaseDocumentTx db = null;
ODocument doc = null;
db = new ODatabaseDocumentTx("local:" + System.getProperty("user.home") + "/testDB");
db.create();
doc = new ODocument("Person");
doc.field("name", "Peter");
doc.save();
String rid = doc.getIdentity().toString();
List<ODocument> results = db.query(new OSQLSynchQuery<ODocument>("select from " + rid));
for (ODocument aDoc : results) {
System.out.println(aDoc.field("name"));
}
db.close();
答案 3 :(得分:1)
或者你可以使用OObjectDatabaseTx的getRecordByUserObject(),
OObjectDatabaseTx db = new OObjectDatabaseTx("local:" + System.getProperty("user.home") + "/testDB");
ODocument oDocument = db.getRecordByUserObject( person, true );
oDocument.save();
String rid = oDocument.getIdentity().toString();
答案 4 :(得分:0)
如果您已经可以从保存中访问代理对象,则可以完全对其执行冷却以获取具有记录ID(标识)的基础ODocument对象。
Person proxyPerson = db.save(person);
ODocument oDocument = ((OObjectProxyMethodHandler)((ProxyObject)proxyPerson).getHandler()).getDoc();
person.setId(oDocument.getIdentity().toString());