什么应该是在spring数据neo4j中获取2列的查询的返回类型?

时间:2013-06-16 13:36:43

标签: java spring neo4j spring-data spring-data-neo4j

我在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

2 个答案:

答案 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