Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么neo4j递归获取?_Neo4j_Spring Data Neo4j - Fatal编程技术网

为什么neo4j递归获取?

为什么neo4j递归获取?,neo4j,spring-data-neo4j,Neo4j,Spring Data Neo4j,我有一个名为PracticeArea的节点,可以有父PracticeArea和子PracticeArea 当我拉一个特定的练习区域时,我希望它能给我带来这个特定的节点及其父节点和子节点。但是,neo也给了我它父母的孩子,父母和所有孩子的孩子,简言之,加载整个图表 无论使用SpringDataNeo4j存储库、自定义查询还是neo4jTemplate,我都会得到相同的结果 interface PracticeAreaGenericRepository extends GraphRepository

我有一个名为PracticeArea的节点,可以有父PracticeArea和子PracticeArea

当我拉一个特定的练习区域时,我希望它能给我带来这个特定的节点及其父节点和子节点。但是,neo也给了我它父母的孩子,父母和所有孩子的孩子,简言之,加载整个图表

无论使用SpringDataNeo4j存储库、自定义查询还是neo4jTemplate,我都会得到相同的结果

interface PracticeAreaGenericRepository extends GraphRepository<PracticeArea> {

@Query("MATCH (n:PracticeArea {practice_area_id:{0}})-[HAS_CHILDREN_PRACTICE_AREA*1]->(c) MATCH (n)-[HAS_PARENT_PRACTICE_AREA*1]->(p) RETURN n, p")
PracticeAreaData findByPracticeArea(String uuid);
}

请指出哪里出了问题。谢谢,您的查询缺少一个关键部分,
连接在一起,并将
n
从第一部分传递到第二部分。否则,您只需查找具有父练习区域和所有父练习区域的所有节点

MATCH (n:PracticeArea {practice_area_id:{0}})-[HAS_CHILDREN_PRACTICE_AREA*..1]->(c)
WITH n
LIMIT 1
MATCH n-[HAS_PARENT_PRACTICE_AREA*..1]->(p)
RETURN n, p

是的,这是有道理的,但我得到了以下错误:java.util.NoSuchElementException:org.neo4j.helpers.collection.iterablerRapper中有多个元素$MyIteratorWrapper@d706480. 第一个元素是'com.xxx.practicearea.dto'。PracticeAreaData@50a1a18f第二个元素是com.xxx.practicearea.dto。PracticeAreaData@58ca300'因为它返回一个练习区集合,所以您必须添加“限制1”以始终将其限制为1个元素。此外,此
-[HAS_CHILDREN_practice_AREA*1]->
表示长度为1或更多的路径!!为了简单起见,我从查询中去掉了子项@查询(“匹配(n:PracticeArea{practice\u area\u id:{0}})-[HAS_PARENT\u practice\u area*1]->(p)返回n,p限制1”),但我仍然在父节点下获取父节点的子节点。所以它又上升又下降了。对不起,回答不好,然后消失了几天。我根据Michael的评论对查询进行了一些更改。
MATCH (n:PracticeArea {practice_area_id:{0}})-[HAS_CHILDREN_PRACTICE_AREA*..1]->(c)
WITH n
LIMIT 1
MATCH n-[HAS_PARENT_PRACTICE_AREA*..1]->(p)
RETURN n, p