我有一个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中缺少什么?
答案 0 :(得分:1)
它在存储后重新加载实体,默认情况下它只加载相关信息的浅表副本。
您可以使用template.fetch(role.users)
或template.fetch(role.tasks)
或者将@Fetch添加到任务列表中。