8

东方数据库问题...

有谁知道插入后如何获取recordId:

db.save(person)

我在 Person POJO 上尝试过:

@Id
private Object id;

但保存后 id 字段为空。我用谷歌搜索和谷歌搜索无济于事。我只需要插入一个对象,然后获取orientdb生成的recordid。

4

5 回答 5

3

在 pojo 中定义字段:

@Id
private Object rid;

public Object getRid() {
    return rid;
}

保存时:

YourClass proxy = db.save(yourClassInstance);
Object rid = proxy.getRid();
于 2014-09-09T13:20:16.687 回答
2

我使用 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();
于 2013-08-29T13:57:03.980 回答
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"));
于 2015-09-07T12:04:33.533 回答
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(); 
于 2013-12-22T06:14:40.553 回答
0

如果您已经可以从保存中访问您的代理对象,您完全可以对其进行很酷的转换,以获取具有记录 ID(身份)的基础 ODocument 对象。

Person proxyPerson = db.save(person);

ODocument oDocument = ((OObjectProxyMethodHandler)((ProxyObject)proxyPerson).getHandler()).getDoc();
person.setId(oDocument.getIdentity().toString());
于 2015-08-10T19:34:32.307 回答