TinkerGraph:为什么通过 GraphTraversalSource 不改变 persist/store 而使用 Graph 可以?

TinkerGraph: why mutating through GraphTraversalSource doesn't persist/store while using Graph does?

您好,我正在尝试使用 TinkerGraph 进行一些小的演示,但似乎无法持续使用 GraphTraversalSource。这是我目前拥有的代码:

    GraphTraversalSource g = TinkerGraph.open().traversal();
    System.out.println(g.V().addV("testlabel").iterate());
    System.out.println(g.V().count().next().intValue()); //returns 0
    try {g.close(); }
    catch(Exception e){
        e.printStackTrace();
    }
    System.out.println(g.V().count().next().intValue()); //returns 0

这是输出:

[TinkerGraphStep(vertex,[]), AddVertexStep({label=[testlabel]})]
0
0

我知道这行得通:

Graph graph = TinkerGraph.open();
Vertex gremlin = graph.addVertex("testlabel");
System.out.println(IteratorUtils.count(graph.vertices()) == 1);

谢谢:)

看起来您需要直接从 GraphTraversalSource 对象而不是 V() 使用 addV(至少对于第一个对象)。以下代码将顶点保留在 gremlin 控制台中

gremlin> g = TinkerGraph.open().traversal();
==>graphtraversalsource[tinkergraph[vertices:0 edges:0], standard]
gremlin> g.V().addV("testing")
gremlin> g.V().count()
==>0
gremlin> g.V().addV("testing")
gremlin> g.V().count()
==>0
gremlin> g.addV("test");
==>v[0]
gremlin> g.V().count()
==>1
gremlin> g.addV("test2");
==>v[1]
gremlin> g.V().count()
==>2
gremlin> g.V().addV("testing3")
==>v[2]
==>v[3]
gremlin> g.V().count()
==>4