我认为我的代码中有错误,但我无法找到哪一个 我有三个节点: a,b和c 有这样的联系 (a) - [r1] - >(b)< - [r2] - (c)(我100%肯定这一点,我用neo4j社区检查过)
但是我的程序只能找到第一个和最后一个。第二个,b,总是被忽略。 这是我的方法:
static List<Node> getNodes(Node startNode,final Node endNode,boolean uniqueResult,List<RelationshipType> relationshipTypes)
{
List<Node> result=new ArrayList<>();
try(Transaction tx=getInstance()._graph.beginTx())
{
TraversalDescription td = getInstance()._graph.traversalDescription().breadthFirst();
for(RelationshipType relationshipType:relationshipTypes)
td=td.relationships(relationshipType);
td=td.evaluator(Evaluators.excludeStartPosition());
if(!uniqueResult)
td=td.uniqueness(Uniqueness.NODE_PATH);
td=td.evaluator(new Evaluator() {
@Override
public Evaluation evaluate(Path path) {
boolean isEndNode=path.endNode().equals(endNode);
return Evaluation.of(isEndNode, !isEndNode);
}
});
Traverser tr=td.traverse( startNode );
for(Path path:tr)
result.add(path.endNode());
tx.success();
}
return result;
}
startNode是一个 endNode是c uniqueResult是真的(但我尝试了假,没有改变) relationShipTypes包含r1和r2。
我不知道为什么它不起作用 谢谢你的帮助
答案 0 :(得分:0)
Path是node-relationship-node的集合。
用
另请参阅:http://docs.neo4j.org/chunked/stable/tutorial-traversal-java-api.html#_path