OrientDB - 无法存储来自Java应用程序的数据

时间:2012-09-13 13:20:49

标签: database nosql orientdb

我正在尝试将Orientlet中的三元组存储为我正在处理的Java应用程序内的Vertex-Edge-Vertex关系。我对使用OrientDB的理解是我可以使用Tinkerpop API并实例化这样的图形:

OrientGraph graph = new OrientGraph("local:/tmp/orient/test_db");

这就是我所做的实例化图形,然后我尝试在这样的循环中连接带有边的顶点:(注意Statement是由subject-relationship-object组成的三元组。)< / p>

for (Statement s : statements) {

     Vertex a = graph.addVertex(null);
     Vertex b = graph.addVertex(null);
     a.setProperty("Subject", s.getSubject().toBELShortForm());
     RelationshipType r = s.getRelationshipType();
     if (s.getObject() != null) {
         b.setProperty("Object", s.getObject().toBELShortForm());
         Edge e = graph.addEdge(null, a, b, r.toString());
     }
     else {
         b.setProperty("Object", "null");
         Edge e = graph.addEdge(null, a, b, "no-relationship");
     }

}

然后我循环遍历图形的顶点并将其打印出来:

for (Vertex v : graph.getVertices()) {
     out.println("Vertex: " +v.toString());
}

它打印了很多顶点,但是当我通过命令行使用server.sh登录服务器时,我看到的只是ORole的3条记录和{{1}的4条记录}}。我在这里错过了什么?因为看起来虽然我的java程序运行并完成,但数据没有被放入数据库。

2 个答案:

答案 0 :(得分:2)

在Server的数据库目录下创建Graph。下面的示例假设OrientDB已安装在“/ usr / local / orient”下:

OrientGraph graph = new OrientGraph("local:/usr/local/orient/databases/test_db");

启动server.sh时,您应该会正确填充此数据库。

LVC @

答案 1 :(得分:1)

答案,至少现在,似乎不是直接使用Tinkerpop API而是使用Orient API。这与我使用Tinkerpop一样,但使用OrientDB API。这实际上确实将我的数据存储到数据库中:

for (Statement s : statements) {
            ODocument sNode = db.createVertex();
            sNode.field("Subject", s.getSubject().toBELShortForm());
            sNode.save();

            ODocument oNode = db.createVertex();
            if (s.getObject() != null) {
                oNode.field("Object", s.getObject().toBELShortForm());
                oNode.save();
            }
            else {
                oNode.field("Object", "null");
                oNode.save();
            }

            RelationshipType r = s.getRelationshipType();
            ODocument edge = db.createEdge(sNode, oNode);
            if (r != null) {
                edge.field(r.toString());
                edge.save();
            }
            else {
                edge.field("no relationship");
                edge.save();
            }
}