Neo4j 3.0.1 和 SDN 4.1.1.RELEASE 寻路
Neo4j 3.0.1 and SDN 4.1.1.RELEASE path finding
我有两个决策节点 - 父节点和子节点。
我已经实现了以下方法 returns 这些节点之间的路径。
@Query("MATCH path=(d:Decision)<-[:CONTAINS*]-(ancestorD:Decision) WHERE id(d) = {decisionId} AND id(ancestorD) = {ancestorDecisionId} RETURN path LIMIT {limit}")
List<Path> findPathsFromDecisionToAncestorDecision(@Param("decisionId") Long decisionId, @Param("ancestorDecisionId") Long ancestorDecisionId, @Param("limit") Integer limit);
在 SDN 3.4.4.RELEASE
和 Neo4j 2.3.3
中,对于直接父子,它返回 1 path
。
现在 Neo4j 3.0.1
和 SDN 4.1.1.RELEASE
它 returns 0 path
.
可以吗,还是应该重写这个查询?
SDN 4 中没有 Path
的概念,只有通过关系引用其他节点的水合节点。
你在这里的选择是 return 节点和关系并遍历对象图(参见 http://graphaware.com/neo4j/2016/04/06/mapping-query-entities-sdn.html 的例子),或者,如果你想要一个严格的路径,使用底层的 GraphDatabaseService(如果可用您使用嵌入式驱动程序)并处理原始节点和关系。
我有两个决策节点 - 父节点和子节点。
我已经实现了以下方法 returns 这些节点之间的路径。
@Query("MATCH path=(d:Decision)<-[:CONTAINS*]-(ancestorD:Decision) WHERE id(d) = {decisionId} AND id(ancestorD) = {ancestorDecisionId} RETURN path LIMIT {limit}")
List<Path> findPathsFromDecisionToAncestorDecision(@Param("decisionId") Long decisionId, @Param("ancestorDecisionId") Long ancestorDecisionId, @Param("limit") Integer limit);
在 SDN 3.4.4.RELEASE
和 Neo4j 2.3.3
中,对于直接父子,它返回 1 path
。
现在 Neo4j 3.0.1
和 SDN 4.1.1.RELEASE
它 returns 0 path
.
可以吗,还是应该重写这个查询?
SDN 4 中没有 Path
的概念,只有通过关系引用其他节点的水合节点。
你在这里的选择是 return 节点和关系并遍历对象图(参见 http://graphaware.com/neo4j/2016/04/06/mapping-query-entities-sdn.html 的例子),或者,如果你想要一个严格的路径,使用底层的 GraphDatabaseService(如果可用您使用嵌入式驱动程序)并处理原始节点和关系。