3

我有以下查询,我通过 @Query 注释在 spring data neo4j 中使用 GraphRepository。所以为了得到一个结果,我将方法的返回类型声明为 List

@Query(value = "START user=node:searchByMemberID(memberID=1) MATCH user-[r:FRIENDS_WITH]->member RETURN member")
List<Node> getNodes(int userID);

现在,如果我想编写一个返回 2 列的查询,其相应方法的返回类型将是什么。例如,对于下面提到的查询,我应该写什么来代替列表,如上面的查询。

START user=node:searchByMemberID(memberID='1') MATCH user-[r:FRIENDS_WITH]->member RETURN member, r.property
4

2 回答 2

9

在这种情况下,查询返回一个Iterable<Map<String,Object>>允许您迭代返回的行的方法。每个元素都是一个映射,您可以通过返回字段的名称访问它,并使用neo4jOperations转换方法将值对象转换为适当的类,即:

Iterable<Map<String, Object>> it = getNodes(...);

while (it.hasNext()) {
   Map<String, Object> map = it.next();
   obj = neo4jOperations.convert(map.get("member"), Node.class);
   ...
}
于 2013-06-16T14:16:05.130 回答
0

您现在可以在 SDN 中执行以下操作:

@QueryResult
public class NodeData {
    Member member;
    String property;
}

然后在存储库中:

@Query("The Query...")
public NodeData getNodes(int userId);

这改编自此处文档中的示例:https ://docs.spring.io/spring-data/neo4j/docs/4.2.x/reference/html/#reference_programming-model_mapresult

于 2018-08-24T15:11:33.090 回答