我试图在一个简单的图中检索两个节点之间的最短路径。我正在接受
NullPointerException at org.springframework.data.neo4j.support.path.ConvertingEntityPath.nodes(ConvertingEntityPath.java:137)
我认为delegate
为空,但我不知道原因。
这是我的存储库,包含cypher查询(在neo4j UI上测试并运行):
@Query("START from=node({0}), to=node({1}) MATCH path=(from)<-[:NETWORK_LINK*]->(to) RETURN path")
Iterable<EntityPath<DGNode, DGNode>> getShortestNetworkPathBetween(Long fromid, Long toid);
和我的测试代码:
System.out.println("Network path from "+srv1.getId()+" to "+srv5.getId()+" : \n");
Iterable result = nodeRepository.getShortestNetworkPathBetween(srv1.getId(), srv5.getId());
Iterable<EntityPath<DGNode,DGNode>> paths = (Iterable<EntityPath<DGNode,DGNode>>) result;
for(EntityPath<DGNode,DGNode> path : paths) {
String nodes = "";
while (path.nodeEntities().iterator().hasNext()) {
nodes += ", " + ((DGNode) path.nodeEntities().iterator().next()).getName();
}
System.out.println("From " + path.startNode().getClass().getName() + " to " + path.endNode().getClass().getName() + " : " + nodes);
}
我的代码基于以下示例spring-data-neo4j-examples。我还检查了这个post,但没有帮助:请求返回一个集合(QueryResultBuilder不能转换为EntityPath),顺便说一句,EndResult似乎已在此版本中重命名为Result。