Neo4jUtil.java
public void getRelationPathByCondition(String startNodeId,String startNodeLabel,String endNodeLabel,String endNodeId) {
//拼装开始节点的查询语句
String startNodeCql = String.format("match data=(:`%s`{id:'%s'})-[*]->", startNodeLabel, startNodeId);
//拼装结束节点的查询语句
String endNodeCql = String.format("(:`%s`{id:'%s'}) return data", endNodeLabel, endNodeId);
//如果有中间路径还可以继续进行拼接
//最终组装好的查询语句
String cypherSql= startNodeCql.concat(endNodeCql);
Result query = session.query(cypherSql, new HashMap<>(16));
for (Map<String, Object> map : query.queryResults()) {
InternalPath.SelfContainedSegment[] ps = (InternalPath.SelfContainedSegment[]) map.get("data");
for (InternalPath.SelfContainedSegment p : ps) {
//开始节点
Node start = p.start();
Map<String, Object> startMap = start.asMap();
startMap.get("name");
startMap.get("id");
//结束节点
Node end = p.end();
Map<String, Object> endMap = end.asMap();
endMap.get("name");
endMap.get("id") ;
//关系
Relationship relationship = p.relationship();
Map<String, Object> relationshipMap = relationship.asMap();
relationshipMap.get("name");
//上面得到的节点的信息,按照自己的要求组装返回格式即可。
}
}
session.clear();
}