在一个查询中创建节点和关系:Spring Data Neo4j

时间:2013-12-17 06:55:12

标签: neo4j spring-data-neo4j spring-data-graph

我正在尝试使用Spring Data Neo4j使用Neo4j创建新的节点和关系。我的用例是在2个用户节点之间添加朋友关系。所以这归结为:

User user1 = userRepo.findByPropertyValue("userId1", userId1);
User user2 = userRepo.findByPropertyValue("userId2", userId2);

if(user1 == null){
    createUserObject(userId1);
}

if(user2 == null){
    createUserObject(userId2);
}

user1.isFriend(user2);

userRepo.save();

所以这包括对DB的两次调用(findByPropertyValue)。这是正确的还是有其他方法可以做到这一点?也许将整个事情分成一个请求?

谢谢..

1 个答案:

答案 0 :(得分:1)

您可以使用单个密码查询执行这两项操作:

START user1=node:User(userId={userId1}),
      user2=node:User(userId={userId2})
CREATE UNIQUE (user1)-[:FRIEND]-(user2);

用户ID在地图中作为参数传递。

您也可以使用带注释的存储库方法。