首页 > 解决方案 > Neo4j Cypher 结果为 Java 中的 Map

问题描述

我想将 Cypher 结果作为 Java Map 返回。

我可以在 Neo4j 浏览器中将结果作为地图返回,如下所示:

MATCH (camera:Camera)-[:BELONGS_TO_IPU]->(ipu:Ipu)
WHERE ID(ipu) = 23
RETURN { id: camera.cameraSid,  camera: camera }

这导致:

{
  "id": 1001,
  "camera": {
    "name": "1001",
    "cameraSid": 1001,
    "ipuRecordId": 0,
    "uniqueIdentifier": "10011001"
  }
}
{
  "id": 1,
  "camera": {
    "name": "1",
    "cameraSid": 1,
    "ipuRecordId": 0,
    "uniqueIdentifier": "11"
  }
}

在 Java 方面,我正在使用 Spring Data Neo4j,我正在尝试像这样获取相机:

@Transactional(readOnly = true)
@Query(" MATCH (camera:Camera)-[:BELONGS_TO_IPU]->(ipu:Ipu) " +
        "WHERE ID(ipu) = {0} " +
        "RETURN { id: camera.cameraSid,  camera: camera }")
Map<Long, Camera> findCamerasMapByIpu(Ipu ipu);

但我得到的是这个错误:

Caused by: org.springframework.dao.IncorrectResultSizeDataAccessException: Incorrect result size: expected at most 1

有可能做我想做的事吗?还是我必须获取所有相机然后自己创建地图?

标签: javadictionaryneo4jcyphergraph-databases

解决方案


推荐阅读