【发布时间】:2017-06-20 12:46:25
【问题描述】:
我正在尝试使用遍历在远程 Gremlin 服务器上修改顶点,但似乎只有在创建顶点的遍历中我还可以添加属性,在开始新的遍历时我不会添加属性。
Scala/Java 集群连接设置代码:
val mapper = GryoMapper.build()
val cluster = Cluster.build().serializer(new GryoMessageSerializerV1d0(mapper)).create
val client = cluster.connect[org.apache.tinkerpop.gremlin.driver.Client.ClusteredClient]()
val graph = EmptyGraph.instance()
val g = graph.traversal().withRemote(DriverRemoteConnection.using(cluster, "g"))
这行得通:
val v1 = g.addV("person").property("name","stephen").next()
这不是:
g.V(v1.id()).property("age","27")
这也不会,甚至会抛出 java.lang.IllegalStateException (propertyAdditionNotSupported),因为顶点是 org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceVertex:
v1.property("age","27")
如果我使用 Gremlin 控制台并远程连接到 Gremlin 服务器,我都可以毫无问题地进行。
:remote connect tinkerpop.server conf/remote.yaml
gremlin> :> g.addV('person').property('name','stephen')
==>v[82128]
gremlin> :> g.V(82128).property('age','27')
==>v[82128]
gremlin> :> g.V(82128).valueMap()
==>[name:[stephen],age:[27]]
Java 远程实现有问题还是我遗漏了什么?
【问题讨论】:
-
找到了解决办法,只好在遍历后面加上.iterate(),还在想明白为什么……
标签: java server gremlin tinkerpop