如何使用 spring 数据在 neo4j 中保存和检索嵌套对象
How to save and retrieve nested objects in neo4j using spring data
我有一个模型,其中用户将有一个角色列表,而角色有一个权限列表。但是,即使我一次保存所有这些 - 深度为 -1,我也无法从父节点检索子节点。
例如:user.getRoles() - 2 [role1,role2]
role1.getAssociatedFeature() - 0
但是如果我从数据库中获得角色
例如:findByRoleName('role1') -> [Role: role1,Display Role,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 操作:
<>Repository.java - 这将默认实现保存、更新、删除、查找
@RepositoryRestResource()
public interface RoleRepository extends GraphRepository<Role>{...}
ServiceImpl.java
@Override
public User create(User u) {
return userRepo.save(u,-1);
}
在我的 Junit 中,我正在创建一个新的用户实体,并一直填充数据以获得许可。但是当我获取用户时 -> 我只获得角色而不是功能,链上的权限。
在 neo4j DB 浏览器中,我看到所有节点都以适当的依赖关系创建。关于如何保存和遍历图形的任何指示?
默认加载深度为 1。这意味着您将获得用户和关联的角色,但不会获得角色的特征或图中更深层次的任何内容。
如果默认值不是您想要的,您可以指定加载深度:
userRepo.findOne(user.getId(), 3);
我有一个模型,其中用户将有一个角色列表,而角色有一个权限列表。但是,即使我一次保存所有这些 - 深度为 -1,我也无法从父节点检索子节点。 例如:user.getRoles() - 2 [role1,role2] role1.getAssociatedFeature() - 0 但是如果我从数据库中获得角色 例如:findByRoleName('role1') -> [Role: role1,Display Role,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 操作: <>Repository.java - 这将默认实现保存、更新、删除、查找
@RepositoryRestResource()
public interface RoleRepository extends GraphRepository<Role>{...}
ServiceImpl.java
@Override
public User create(User u) {
return userRepo.save(u,-1);
}
在我的 Junit 中,我正在创建一个新的用户实体,并一直填充数据以获得许可。但是当我获取用户时 -> 我只获得角色而不是功能,链上的权限。
在 neo4j DB 浏览器中,我看到所有节点都以适当的依赖关系创建。关于如何保存和遍历图形的任何指示?
默认加载深度为 1。这意味着您将获得用户和关联的角色,但不会获得角色的特征或图中更深层次的任何内容。
如果默认值不是您想要的,您可以指定加载深度:
userRepo.findOne(user.getId(), 3);