2

私は、JavaのネイティブAPIを使用してDSEグラフにエッジを追加できました。 しかし、私は、Javaの流暢なAPIを使用してエッジを追加しようとすると、それは動作しません。 私は流暢なAPIのためのドキュメントを通過し、エッジを追加する方法を示すものは何もありませんでした。私はJavaでエッジを追加しようとすると、それはエッジを伝える、実行時エラーがDataStax Enterprise Graph Fluent APIを使用してエッジを追加

を追加することはできません与え、それ以来、流暢なAPIを使用するJava

から流暢なAPIを使用してエッジを追加する方法はありますJavaコードから、より読みやすい

サンプルコード:

は、ユーザと呼ばれる頂点があると言うことができます。ムービーと呼ばれる別の頂点。私はユーザーと映画の間のエッジが欲しい。これは私がjavaで試しているものです。私は頂点を追加することができます(コードは頂点を1つしか追加しません)。私はエッジを追加しようとすると、実際には、エッジ部分については、私はランタイムエラーを取得

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) 
+0

あなたがエッジを作成しようとしている方法については、コードの一部を表示するためにあなたの質問を更新してください。 –

+0

@stephenmalletteは、これを明確にするためにサンプルコード –

答えて

1

それはまったく動作しません。すぐにこれを行うよう(すなわちnext()を呼び出していない):あなたは、もはやトラバーサルAPIを使用している

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

。それ以降のすべてはGraph APIであり、Graph APIはリモート実行ではサポートされていません。より明確にするために、next()を呼び出すと、トラバーサルAPIの一部ではないVertexが発行されます。 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') 
+0

を更新しました。 –

関連する問題