在我的Java代码中,我有一个查询来匹配从根到树中叶子的最短路径。
Strinq query = "Match path = (p:Root)-[*1..100]-(m:Leaf) "
+ "WITH p,m,path ORDER BY length(path) LIMIT 1 RETURN path";但是,当我试图查询以下内容时
SessionFactory sessionFactory = new SessionFactory("incyan.Data.Neo4j.Models");
Session session = sessionFactory.openSession("http://localhost:7474");
Object o = session(query, new HashMap<String,Object>());o包含一个LinkedHashMap的ArrayList,而不是映射的对象。
我甚至无法确定路径元素的标签以及关系的开始和结束节点。
我做错了什么?
发布于 2016-01-01 05:03:49
当前的新4j-ogm发行版没有将查询结果映射到域实体。返回路径只会给出该路径中节点和关系的属性(按照顺序,您可以推断关系的开始/结束)。ID不是由OGM当前用于此特定操作的Neo4j REST返回的,这就是它们丢失的原因。相反,您可能必须提取ID并作为查询的一部分返回它们。
将单个查询结果列映射到实体将在Neo4j-OGM2.0版本中可用。
发布于 2015-12-29 14:34:06
我不确定是否使用了Java位,但是如果使用shortestPath函数(关键字?)您的查询应该更有效:
MATCH path=shortestPath((p:Root)-[*1..100]-(m:Leaf))
RETURN path而且,我不知道您的数据模型是什么样的,但是我希望树节点上的标签(我假设它是一棵树)都是相同的。您可以使用Cypher判断节点是根还是叶:
MATCH path=shortestPath((root:Element)-[*1..100]-(leaf:Element))
WHERE NOT((root)-[:HAS_PARENT]->()) AND NOT(()-[:HAS_PARENT]->(leaf))
RETURN pathhttps://stackoverflow.com/questions/34512743
复制相似问题