8

OrientDBの質問...

挿入後にrecordIdを取得する方法を知っている人はいますか:

db.save(person)

Person POJOで以下を試しました:

@Id
private Object id;

しかし、保存後にidフィールドはnullでした。私は無駄にググってググった。オブジェクトを挿入してから、orientdb が生成するレコード ID を取得するだけです。

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

POJOの代わりにODocumentsを使用して動作するようにしました(これは私のプロジェクトで機能します)。コードサンプル:

    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 に答える
0

保存したプロキシ オブジェクトに既にアクセスしている場合は、レコード ID (Identity) を持つ基になる ODocument オブジェクトを取得するために、完全にクールなキャストを実行できます。

Person proxyPerson = db.save(person);

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