我正在尝试使用遍历修改远程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远程实现是否有漏洞,还是我遗漏了什么?