OrientDBの質問...
挿入後にrecordIdを取得する方法を知っている人はいますか:
db.save(person)
Person POJOで以下を試しました:
@Id
private Object id;
しかし、保存後にidフィールドはnullでした。私は無駄にググってググった。オブジェクトを挿入してから、orientdb が生成するレコード ID を取得するだけです。
pojo でフィールドを定義します。
@Id
private Object rid;
public Object getRid() {
return rid;
}
保存時:
YourClass proxy = db.save(yourClassInstance);
Object rid = proxy.getRid();
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();
保存したプロキシ オブジェクトに既にアクセスしている場合は、レコード ID (Identity) を持つ基になる ODocument オブジェクトを取得するために、完全にクールなキャストを実行できます。
Person proxyPerson = db.save(person);
ODocument oDocument = ((OObjectProxyMethodHandler)((ProxyObject)proxyPerson).getHandler()).getDoc();
person.setId(oDocument.getIdentity().toString());