节点不会持久存在Neo4j

时间:2014-12-20 01:09:37

标签: java neo4j spring-data-neo4j

我有一个Role节点,其中包含我试图保留到Neo4j中的一些权限。当我构造对象时,我看到权限存在,但在保存调用之后它们就消失了。

这是我的角色节点:

@NodeEntity
public class Role {

    @GraphId Long id;
    private RoleType roleType;

    //@RelatedToVia(type="HAS_ROLE", direction=Direction.OUTGOING)
    private List<Person> users;

    private List<Privilege> defaultPrivileges;
    //private List<Task> tasks;


    public Role(){}

    public Role(RoleType roleType){
        this.roleType=roleType;
        this.defaultPrivileges=roleType.getDefaultPrivileges();
    }

}

这是我的保存:

admin= roleRepository.save(admin);

在我保存对象之前,它是完全填充的并且在它被清空之后。关于为什么可能

的任何想法

编辑: 导致问题的代码在我的Privilege类中。

这不起作用:

public class Privilege {

    private String name;

    public Privilege(PrivilegeType pt) {
        this.name = pt.name();
    }
}

这有效:

 public class Privilege {

    private String name;

    public Privilege(String pt) {
        this.name = pt;
    }
}

为什么会导致它不能持久?我在RoleRepository中缺少什么?

1 个答案:

答案 0 :(得分:1)

它在存储后重新加载实体,默认情况下它只加载相关信息的浅表副本。

您可以使用template.fetch(role.users)template.fetch(role.tasks) 或者将@Fetch添加到任务列表中。