东方数据库问题...
有谁知道插入后如何获取recordId:
db.save(person)
我在 Person POJO 上尝试过:
@Id
private Object id;
但保存后 id 字段为空。我用谷歌搜索和谷歌搜索无济于事。我只需要插入一个对象,然后获取orientdb生成的recordid。
在 pojo 中定义字段:
@Id
private Object rid;
public Object getRid() {
return rid;
}
保存时:
YourClass proxy = db.save(yourClassInstance);
Object rid = proxy.getRid();
我使用 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();
代码很简单:
//insertquery will be the sql statement you want to insert
ODocument result=db.command(new OCommandSQL(insertquery)).execute();
System.out.println(result.field("@rid"));
或者,您可以使用 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();
如果您已经可以从保存中访问您的代理对象,您完全可以对其进行很酷的转换,以获取具有记录 ID(身份)的基础 ODocument 对象。
Person proxyPerson = db.save(person);
ODocument oDocument = ((OObjectProxyMethodHandler)((ProxyObject)proxyPerson).getHandler()).getDoc();
person.setId(oDocument.getIdentity().toString());