Gremlin TinkerGraph在将ID用作字符串vs Long时检索不一致

Gremlin TinkerGraph在将ID用作字符串vs Long时检索不一致,gremlin,Gremlin,在TinkerGrapg中存储顶点时,我看到ID很长: {TinkerVertex@7955} "v[304]" 当我这样做时: graph.V(304).next(); graph.V(304l).next(); 它不起作用 当我这样做时: graph.V("304").next(); 它不起作用 当我这样做时: graph.V(304).next(); graph.V(304l).next(); 或 它起作用了 我试图对TinkerGraph和DSE Graph使用相同

在TinkerGrapg中存储顶点时,我看到ID很长:

{TinkerVertex@7955} "v[304]"
当我这样做时:

graph.V(304).next(); 
graph.V(304l).next(); 
它不起作用

当我这样做时:

graph.V("304").next(); 
它不起作用

当我这样做时:

graph.V(304).next(); 
graph.V(304l).next(); 

它起作用了

我试图对TinkerGraph和DSE Graph使用相同的Gremlin代码。问题是一个返回
long
,另一个作为字符串

我很好奇如何让同一个小精灵同时使用int/long和String ID。。这是API的问题吗


谢谢

TinkerGraph使用and
IdManager
,它可以将标识符强制为不同的类型。您可以阅读更多关于这方面的内容,但基本上,如果您希望
g.V(1)
g.V(1L)
都返回一个值,您希望按照以下方式配置TinkerGraph:

gremlin> conf = new BaseConfiguration()
==>org.apache.commons.configuration.BaseConfiguration@552518c3
gremlin> conf.setProperty('gremlin.tinkergraph.vertexIdManager',"LONG")
gremlin> graph = TinkerGraph.open(conf)
==>tinkergraph[vertices:0 edges:0]
gremlin> g = graph.traversal()
==>graphtraversalsource[tinkergraph[vertices:0 edges:0], standard]
gremlin> g.addV(id, 1L)
==>v[1]
gremlin> g.addV(id, 2)
==>v[2]
gremlin> g.V(1)
==>v[1]
gremlin> g.V(1L)
==>v[1]
gremlin> g.V(2L)
==>v[2]
gremlin> g.V(2)
==>v[2]
事实上,当您使用
IdManager
时,即使这样也可以:

gremlin> g.V("2")
==>v[2]

如果愿意,您可以将自己的
IdManager
实现指定给TinkerGraph,只需向配置提供完全限定的类名(即,而不是“LONG”)。

TinkerGraph使用和
IdManager
,这可以将标识符强制为不同的类型。您可以阅读更多关于这方面的内容,但基本上,如果您希望
g.V(1)
g.V(1L)
都返回一个值,您希望按照以下方式配置TinkerGraph:

gremlin> conf = new BaseConfiguration()
==>org.apache.commons.configuration.BaseConfiguration@552518c3
gremlin> conf.setProperty('gremlin.tinkergraph.vertexIdManager',"LONG")
gremlin> graph = TinkerGraph.open(conf)
==>tinkergraph[vertices:0 edges:0]
gremlin> g = graph.traversal()
==>graphtraversalsource[tinkergraph[vertices:0 edges:0], standard]
gremlin> g.addV(id, 1L)
==>v[1]
gremlin> g.addV(id, 2)
==>v[2]
gremlin> g.V(1)
==>v[1]
gremlin> g.V(1L)
==>v[1]
gremlin> g.V(2L)
==>v[2]
gremlin> g.V(2)
==>v[2]
事实上,当您使用
IdManager
时,即使这样也可以:

gremlin> g.V("2")
==>v[2]
如果愿意,您可以将自己的
IdManager
实现指定给TinkerGraph-只需为配置提供完全限定的类名(即,而不是“LONG”)