首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tinkerpop3 DSE中的事务

Tinkerpop3 DSE中的事务
EN

Stack Overflow用户
提问于 2018-03-13 11:01:46
回答 1查看 210关注 0票数 2

这是一个通过TinkerPop3 Java理解DSE图中事务语义的问题。

正如我所理解的,当您在单个事务中执行DseSession.executeGraph(String query)时。

但是使用TinkerPop3 Java实现相同目标的机制是什么呢?假设我想要添加一个顶点,然后删除几个边,然后添加一个新的顶点等等,

我试过了

代码语言:javascript
复制
g.V("{~label=company, id=12345}").drop().addV("company").property("id", "1").next()

这不像我想的那样。(放弃公司,在一笔交易中增加一笔)。第一个顶点确实被删除了,但是新公司从未被创建过。

我不例外

代码语言:javascript
复制
Exception in thread "main" java.util.NoSuchElementException
    at com.datastax.dse.graph.internal.DseRemoteTraversal.nextTraverser(DseRemoteTraversal.java:60)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-14 11:04:38

drop()步骤“杀死”要删除的遍历程序,这意味着drop()不会返回任何内容。您可以看到,如果您尝试这样做:

代码语言:javascript
复制
gremlin> g.V().has('name','marko').drop().next()
java.util.NoSuchElementException
Type ':help' or ':h' for help.
Display stack trace? [yN]

如果没有遍历器,就没有任何东西可以转发到下面的addV()步骤。也许有一种更好的方法来完成这个任务,但是您可以通过使用inject()作为一个遍历器添加一个丢弃值来解决这个问题,这个遍历器将输入您的addV()。在本例中,您删除了一件事情,因此需要将一个遍历器放回,从而触发对addV()的单个调用:

代码语言:javascript
复制
gremlin> g.V().has('name','marko').drop().
......1>   inject(1).
......2>   addV('person').property('name','stephen').next()
==>v[13]

我还想知道这是否是一种很好的方法:

代码语言:javascript
复制
gremlin> g.V().has('name','marko').
......1>   union(drop(),
......2>         addV('person').property('name','stephen'))
==>v[13]
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49254489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档