首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Neo4j-ogm查询路径

Neo4j-ogm查询路径
EN

Stack Overflow用户
提问于 2015-12-29 14:07:13
回答 2查看 544关注 0票数 1

在我的Java代码中,我有一个查询来匹配从根到树中叶子的最短路径。

代码语言:javascript
复制
Strinq query = "Match path = (p:Root)-[*1..100]-(m:Leaf) "
    + "WITH p,m,path ORDER BY length(path) LIMIT 1 RETURN path";

但是,当我试图查询以下内容时

代码语言:javascript
复制
SessionFactory sessionFactory = new SessionFactory("incyan.Data.Neo4j.Models");
Session session = sessionFactory.openSession("http://localhost:7474");
Object o = session(query, new HashMap<String,Object>());

o包含一个LinkedHashMapArrayList,而不是映射的对象。

我甚至无法确定路径元素的标签以及关系的开始和结束节点。

我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-01 05:03:49

当前的新4j-ogm发行版没有将查询结果映射到域实体。返回路径只会给出该路径中节点和关系的属性(按照顺序,您可以推断关系的开始/结束)。ID不是由OGM当前用于此特定操作的Neo4j REST返回的,这就是它们丢失的原因。相反,您可能必须提取ID并作为查询的一部分返回它们。

将单个查询结果列映射到实体将在Neo4j-OGM2.0版本中可用。

票数 1
EN

Stack Overflow用户

发布于 2015-12-29 14:34:06

我不确定是否使用了Java位,但是如果使用shortestPath函数(关键字?)您的查询应该更有效:

代码语言:javascript
复制
MATCH path=shortestPath((p:Root)-[*1..100]-(m:Leaf))
RETURN path

而且,我不知道您的数据模型是什么样的,但是我希望树节点上的标签(我假设它是一棵树)都是相同的。您可以使用Cypher判断节点是根还是叶:

代码语言:javascript
复制
MATCH path=shortestPath((root:Element)-[*1..100]-(leaf:Element))
WHERE NOT((root)-[:HAS_PARENT]->()) AND NOT(()-[:HAS_PARENT]->(leaf))
RETURN path
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34512743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档