【问题标题】:DataStax Enterprise Graph adding Edge using Fluent APIDataStax Enterprise Graph 使用 Fluent API 添加边缘
【发布时间】:2018-10-05 10:28:45
【问题描述】:

我能够使用来自 java 的本机 api 在 DSE 图中添加一条边。 但是当我尝试在java中使用流利的api添加边缘时,它不起作用。 我浏览了 fluent api 的文档,没有任何内容可以显示如何添加边缘。当我尝试在 java 中添加边缘时,它会出现运行时错误,告诉无法添加边缘

有什么方法可以使用 java 的 fluent api 添加边缘

想要使用fluent api,因为它从java代码中更具可读性

示例代码:

假设有一个称为用户的顶点。另一个称为电影的顶点。我想要用户和电影之间的优势。这就是我在java中尝试的。我能够添加顶点(代码显示只添加一个顶点)并且效果很好。不太确定边缘部分,当我尝试添加边缘时,我得到运行时错误

 GraphTraversal<Vertex,Vertex> traversal =  g.addV("user").property("name", 
 "abcd");
 GraphStatement graphStatement = DseGraph.statementFromTraversal(traversal);
 GraphResultSet grs = dseSession.executeGraph(graphStatement);
 Vertex user1 = g.V().has("user","name","abcd").next();
 g.V().has("movie","name","movie1").next().addEdge("ratedBy",user1)

【问题讨论】:

  • 请更新您的问题以显示您尝试创建边缘的一些代码。
  • @stephenmallette 更新了示例代码

标签: datastax-enterprise datastax-java-driver datastax-enterprise-graph


【解决方案1】:

它不会那样工作。只要您这样做(即致电next()):

g.V().has("movie","name","movie1").next().addEdge("ratedBy",user1)

您不再使用 Traversal API。之后的一切都是 Graph API,并且不支持远程执行 Graph API。更清楚地说,调用 next() 会发出一个 Vertex,它不是 Traversal API 的一部分。查看 javadocs 可能会更清楚地了解那里的区别。 Graph API 是为提供者(那些实现 TinkerPop 接口的)提供的,并且是here。 Traversal API 是供用户使用的,它在内部使用 Graph API 来针对不同的图形实现执行 Gremlin。 Traversal API 主要由GraphTraversalGraphTraversalSource 类组成,如here 所示。

您应该简单地执行一次遍历来构造边:

g.addV('user').property('name','abcd').as('user').
  V().has('movie','name','movie1').
  addE('ratedBy').to('user')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-09
    • 2021-01-10
    • 1970-01-01
    • 2018-01-20
    • 1970-01-01
    • 2017-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多