我在spring数据neo4j中通过GraphRepository的@Query注释使用了以下查询。因此,为了获得结果,我将方法的返回类型声明为List
@Query(value = "START user=node:searchByMemberID(memberID=1) MATCH user-[r:FRIENDS_WITH]->member RETURN member")
List<Node> getNodes(int userID);
现在,如果我想编写一个返回2列的查询,那么它的相应方法的返回类型是什么。对于例如对于下面提到的查询,我应该如何在上面的查询中代替List。
START user=node:searchByMemberID(memberID='1') MATCH user-[r:FRIENDS_WITH]->member RETURN member, r.property
答案 0 :(得分: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);
...
}
答案 1 :(得分:0)
You can now do something like this in SDN:
@QueryResult
public class NodeData {
Member member;
String property;
}
And then in the repository:
@Query("The Query...")
public NodeData getNodes(int userId);
This was adapted from an example in the documentation here: https://docs.spring.io/spring-data/neo4j/docs/4.2.x/reference/html/#reference_programming-model_mapresult