Neo4j Session.query()-如何将查询响应映射到自定义Java对象 我有一个节点实体:

Neo4j Session.query()-如何将查询响应映射到自定义Java对象 我有一个节点实体:,neo4j,spring-data,cypher,spring-data-neo4j,spring-data-neo4j-4,Neo4j,Spring Data,Cypher,Spring Data Neo4j,Spring Data Neo4j 4,那么,如何将给定的查询结果直接映射到Consumer或CustomQueryResult对象中呢 或者,使用具有动态关系名称和深度的Spring Data Neo4j存储库也可以做同样的事情,比如: @Query("MATCH (startNode:Consumer {mobileNumber : {0}})-[rel:{1} *..{2}]->(endNode:Consumer) RETURN startNode as node, rel as relationships") C

那么,如何将给定的查询结果直接映射到
Consumer
CustomQueryResult
对象中呢

或者,使用具有动态关系名称和深度的Spring Data Neo4j存储库也可以做同样的事情,比如:

@Query("MATCH (startNode:Consumer {mobileNumber : {0}})-[rel:{1} *..{2}]->(endNode:Consumer) RETURN startNode as node, rel as relationships")
    CustomQueryResult findByMobileNumberAndRelationship(String mobileNo, String relationshipName, @Depth int depth);

尽管我确信上述代码不起作用。

您的查询返回多行

MATCH (startNode:Consumer {mobileNumber : {0}})-[rel:HAS_CONTACT *..1]->(endNode:Consumer) 
RETURN startNode as node, rel as relationships
其中,
节点
对每个
rel
重复。存储库基础结构能够处理这个问题,但是
queryForObject
不能,它需要一行

如果您以以下方式修改查询,使其仅返回1行,则该查询应该可以工作:

MATCH (startNode:Consumer {mobileNumber : {0}})-[rel:HAS_CONTACT *..1]->(endNode:Consumer) 
RETURN startNode as node, COLLECT(rel) as relationships 

您的查询返回多行

MATCH (startNode:Consumer {mobileNumber : {0}})-[rel:HAS_CONTACT *..1]->(endNode:Consumer) 
RETURN startNode as node, rel as relationships
其中,
节点
对每个
rel
重复。存储库基础结构能够处理这个问题,但是
queryForObject
不能,它需要一行

如果您以以下方式修改查询,使其仅返回1行,则该查询应该可以工作:

MATCH (startNode:Consumer {mobileNumber : {0}})-[rel:HAS_CONTACT *..1]->(endNode:Consumer) 
RETURN startNode as node, COLLECT(rel) as relationships 
MATCH (startNode:Consumer {mobileNumber : {0}})-[rel:HAS_CONTACT *..1]->(endNode:Consumer) 
RETURN startNode as node, rel as relationships
MATCH (startNode:Consumer {mobileNumber : {0}})-[rel:HAS_CONTACT *..1]->(endNode:Consumer) 
RETURN startNode as node, COLLECT(rel) as relationships