Java中如何通过Record ID查询OrientDB Vertex图对象?

How do I query OrientDB Vertex graph object by Record ID in Java?

如何使用 Record ID 检索 OrientDB Document/Object 或 Graph 对象? (语言:Java)

我指的是 http://orientdb.com/docs/2.0/orientdb.wiki/Tutorial-Record-ID.html 和 Vertex.getId() / Edge.getId() 方法。

这就像一个 SQL 查询 "SELECT * from aTable WHERE ID = 1"。

Usage/purpose 描述:我想存储OrientDB创建后生成的ID,以后使用相同的ID检索相同的对象。

(1) 我建议使用 OrientDB 2.1 及其文档,例如http://orientdb.com/docs/2.1/Tutorial-Record-ID.html

(2) 根据您的 post,我不清楚您是需要帮助从查询结果中获取 RID,还是需要根据其 RID 检索对象,所以让我首先提到前者可以如此示例所示完成(在 INSERT 查询的情况下):

ODocument result=db.command(new OCommandSQL(<INSERTQUERY>)).execute();

System.out.println(result.field("@rid"));

反之,有几种方法。我已经验证以下使用版本 2.1.8 确实有效:

OrientGraph graph = new OrientGraph("plocal:PATH_TO_DB", "admin", "admin");
Vertex v = graph.getVertex("#16:0");

另一种更通用的方法是构建并执行 SELECT FROM :RID 形式的 SELECT 查询,与此示例类似:

List<ODocument> results = db.query(new OSQLSynchQuery<ODocument>("select from " + rid));
for (ODocument aDoc : results) {
    System.out.println(aDoc.field("name"));
}

(3) 在实践中,在 Java 代码中的 OrientDB 顶点和边上使用其他一些 "handle" 通常会更好,或者在使用任何受支持的编程语言时。例如,一旦有一个顶点作为 Java Vertex,如上面的 "Vertex v" 示例,通常可以使用它。