java - 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
有可能做我想做的事吗?还是我必须获取所有相机然后自己创建地图?
解决方案
推荐阅读
- docker - 在其他 docker 容器中访问网络
- scala - 如何在 spark/scala 中编写或调用 -SQL 游标?
- airflow - dag 中的气流“并发”参数不一致
- azure-devops - 如何显示项目的构建状态
- javascript - Preloding apis 在 safari 12 中显示“几秒钟内未使用”警告,但在 chrome 中运行良好
- postgresql - 在 postgresql 中指定 Prisma 的数据库名称
- r - R中的数据框问题
- c# - 如何检测方法自上次编译后是否已更改?
- visual-studio - Visual Studio Code 如何更改设置以不恢复旧会话,每次打开新窗口,新会话
- amazon-web-services - Application Load Balancer 的安全组