我目前正在使用spring-data-neo4j来获取两个节点之间的路径。这是存储库:
"select * from job_post as jp
join experience as e on e.exp_id = jp.exp_id
where jp.emp_id in (".$ids.")"
然而,例外情况说只有1行被发现但找到了2行。
有关详细信息,请将代码更改为:
@Query("MATCH p=((n:GLNode)-[:GLRelationship*0..]->(m:GLNode)) WHERE id(n)={0} and id(m)={1} RETURN nodes(p)")
Collection<GLNode> getAllPathes(Long sid, Long eid);
我可以得到一些未正确映射到域@Query("MATCH p=((n:GLNode)-[:GLRelationship*0..]->(m:GLNode)) WHERE id(n)={0} and id(m)={1} RETURN nodes(p)")
Collection<Collection<GLNode>> getAllPathes(Long sid, Long eid);
的响应,例如,节点的GLNode
缺失。
如果我只找到最短的路径,例如,
id
然后一切正常。
那么,将从neo4j查询的多个路径映射到java中的单个对象的正确方法是什么?
感谢。
===============更新==============
我通过仅获取节点的id来提出临时解决方案,即
@Query("MATCH p=shortestPath((n:GLNode)-[:GLRelationship*0..]->(m:GLNode)) WHERE id(n)={0} and id(m)={1} RETURN nodes(p)")
Collection<GLNode> getAllPathes(Long sid, Long eid);
仅当客户知道所有图表时才有效。
=====================更新2 ===================== ==
预计只有1行,但实际上会发现2个异常,并带有以下代码:
@Query("MATCH p=((n:GLNode)-[:GLRelationship*0..]->(m:GLNode)) WHERE id(n)={0} AND id(m)={1} RETURN [node in nodes(p) | id(node)] AS nodes, [rel in relationships(p) | id(rel)] AS rels")
Collection<HashMap> getAllPathes(Long sid, Long eid);
以下是例外情况:
@Query("MATCH p=((n:GLNode)-[:GLRelationship*0..]->(m:GLNode)) WHERE id(n)={0} AND id(m)={1} RETURN nodes(p)")
HashMap getAllPathes(Long sid, Long eid);