次のノードから作成されたグラフがあります。
@NodeEntity
public class Node {
@GraphId
private Long id;
private String desc;
@Relationship(type = "CONNECTED_WITH", direction = Relationship.UNDIRECTED)
private Set<Node> nodes;
//getters and setters
}
私の Spring Data リポジトリには、これらのノード間の最短パスの Cypher クエリが含まれています。
@Query("START startNode = node({startId}), endNode = node({endId}) " +
"MATCH paths = allShortestPaths((startNode)-[*]-(endNode)) " +
"RETURN paths")
Iterable<Map<String, Iterable<Object>>> findShortestPaths(@Param("startId") long startId, @Param("endId") long endId);
2 番目の Iterable は、実際のパスをノードと関係のリストとして返します。これらのそれぞれは、プロパティを持つハッシュ マップとして表されます。このような単純なグラフの場合:
A -- B -- C
とのfindShortestPaths
間のメソッドの結果パスには、次の5 つの要素が含まれます。A
C
{desc=DescA}, {}, {desc=DescA}, {}, {desc=DescA}
空のマップはノード間の関係を表していると思いますが、この場合、プロパティはありません。id
私の問題は、ノードを表すマップにプロパティが含まれていないことです。
質問: ハッシュ マップではなく、対応するエンティティ オブジェクトとしてノードを返すことは可能ですか? そうでない場合、返されたハッシュ マップ内のパス ノードの ID を取得するにはどうすればよいですか?