如何使用spring数据

时间:2016-03-19 18:57:12

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

我有一个模型,其中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数据库浏览器中,我看到所有节点都是以适当的依赖关系创建的。关于如何保存和遍历图表的任何指针?

1 个答案:

答案 0 :(得分:2)

默认加载深度为1.这意味着您将获得用户和相关角色,但不会获得角色的功能或图表中更深层次的内容。

如果默认值不是您想要的,则可以指定加载深度:

userRepo.findOne(user.getId(), 3);

http://docs.spring.io/spring-data/neo4j/docs/current/reference/html/#_fine_grained_control_via_depth_specification