Followee< - 追随者关系Spring-data Neo4j

时间:2016-05-07 09:17:48

标签: neo4j spring-data spring-data-neo4j spring-data-neo4j-4

我有一个类似Twitter的域模型,其中USER可以关注其他用户。我的班级看起来像这样,

@NodeEntity
public class UserNodeEntity {

@GraphId
Long id;

@Property(name = "firstName")
private String firstName;

@Property(name = "lastName")
private String lastName;

@Relationship(type = "FOLLOWS", direction = Relationship.INCOMING)
private Set<UserNodeEntity> followers = new HashSet<>();

@Relationship(type = "HAS_ROLE", direction = Relationship.OUTGOING)
private Set<UserRole> roles = new HashSet<>();


// getters and setters 
...


}

我添加新关注者的代码如下所示,

public void createNewFollower(String id, String followerId) {
    UserNodeEntity usr = getUserById(id); //fetch the user by id from Neo4j
    UserNodeEntity follower = getUserById(followerId);
    if (usr != null) {
        usr.getFollowers().add(follower);
        userRepo.save(usr);
    }
}

添加新角色的代码如下所示,

public void assignNewRole(String id, UserRole role) {
    UserNodeEntity usr = getUserById(id); //fetch the user by id from Neo4j
    if (usr != null) {
        usr.getRoles().add(role);
        userRepo.save(usr);
    }
}

当我用跟随者和跟随者的ID调用 createNewFollower()方法时,会按预期创建一个关系(FOLLOWEE&lt; - FOLLOWS&lt; - FOLLOWER)。但是,当我使用用户ID和他的角色调用 assignNewRole()方法时,将通过名称 HAS_ROLE 创建一个新关系,并再创建一个 FOLLOWS 在前一个跟随者和被跟随者之间创建了关系。现在两个用户互相跟随而不是一个关系(FOLLOWEE&lt; - FOLLOWS&lt; - FOLLOWER)

任何人都可以帮助我理解为什么会这样吗?

我的Neo4j版本是2.3.3,spring-data-neo4j版本是4.0.0.RELEASE

0 个答案:

没有答案