我有一个模型,其中User将有一个Roles列表,Role有一个Permissions列表。但是,即使我一次保存所有这些 - 深度为-1,我也无法从父节点检索子节点。 例如:user.getRoles() - 2 [role1,role2] role1.getAssociatedFeature() - 0 但是,如果我从DB获得角色 例如:findByRoleName(' role1') - > [角色:role1,显示角色,associatedFeatures [2]]
User.java
@NodeEntity
public class User {
@GraphId Long id;
private String name;
private String loginUserName;
@Relationship(type="ROLE")
private Set<Role> associatedRoles = new HashSet<Role>();
} Role.java
@NodeEntity
public class Role {
@GraphId Long id;
private String roleName;
private String displayRoleName;
@Relationship(type="ACCESS_TO")
private Set<Feature> associatedFeatures = new HashSet<Feature>();
}
Feature.java
@NodeEntity
public class Feature {
@GraphId Long id;
private String featureName;
@Relationship(type="HAS_PERMISSION")
private Set<Permission> permissions = new HashSet<Permission>();
}
@NodeEntity
public @Data class Permission {
@GraphId
Long id;
String permission;
}
我使用Spring数据jpa来使用CRUD操作: &lt;&gt; Repository.java - 这将通过默认实现保存,更新,删除,查找
@RepositoryRestResource()
public interface RoleRepository extends GraphRepository<Role>{...}
ServiceImpl.java
@Override
public User create(User u) {
return userRepo.save(u,-1);
}
在我的Junit中 - 我正在创建一个新的用户实体,并将数据一直填充到权限。但是当我取用用户时 - &gt;我只获得角色,但没有获得特征,链条上的许可。
在neo4j数据库浏览器中,我看到所有节点都是以适当的依赖关系创建的。关于如何保存和遍历图表的任何指针?
答案 0 :(得分:2)
默认加载深度为1.这意味着您将获得用户和相关角色,但不会获得角色的功能或图表中更深层次的内容。
如果默认值不是您想要的,则可以指定加载深度:
userRepo.findOne(user.getId(), 3);