Neo4j:loadByProperty正在加载其他没有';不属于节点
我的结构如下: 公司->拥有一组用户->每个用户拥有一组策略->每个策略针对一个公司 示例图形结构:Neo4j:loadByProperty正在加载其他没有';不属于节点,neo4j,spring-data-neo4j-4,Neo4j,Spring Data Neo4j 4,我的结构如下: 公司->拥有一组用户->每个用户拥有一组策略->每个策略针对一个公司 示例图形结构: u1 <- c1 -> u2 p1 -> c1 u1 -> p1 u1u2 p1->c1 u1->p1 公司(c1)有两个用户(u1、u2),一个策略(p1)属于公司(c1)。“u1”已采用策略(p1)。“u2”没有政策 当我试图通过“loadByProperty”方法加载u2时,应该是User2对象和相应的公司(c1)
u1 <- c1 -> u2
p1 -> c1
u1 -> p1
u1u2
p1->c1
u1->p1
公司(c1)有两个用户(u1、u2),一个策略(p1)属于公司(c1)。“u1”已采用策略(p1)。“u2”没有政策
当我试图通过“loadByProperty”方法加载u2时,应该是User2对象和相应的公司(c1)
但是,策略(p1)也正在加载并设置为“u2”对象
阶级结构
Company{
Stirng companyName;
@Relationship(type = "hasUsers", direction = Relationship.OUTGOING)
List<User> users;
}
User{
Stirng userName;
@Relationship(type = "hasPolicy", direction = Relationship.OUTGOING)
List<Policy> policies;
}
Policy{
String policyName;
@Relationship(type = "forCompany", direction = Relationship.OUTGOING)
Company company;
}
公司{
斯蒂恩公司名称;
@关系(type=“hasUsers”,direction=Relationship.OUTGOING)
列出用户名单;
}
使用者{
Stirng用户名;
@关系(type=“hasPolicy”,direction=Relationship.OUTGOING)
列出政策;
}
政策{
字符串policyName;
@关系(type=“forCompany”,direction=Relationship.OUTGOING)
公司;
}
检索用户的方法:
public User getUser(String userName) {
Property<String, Object> properties = new Property<String, Object("userName", userName);
Set<User> users = (Set<User>) session.loadByProperty(User.class, properties);
if (users != null && !users.isEmpty())
for (User user : users)
return user;
return null;
}
public用户getUser(字符串用户名){
Property properties=new Property可以通过多种方式按属性值加载实体
NEO4JOOperations
使用loadByProperty
或loadAllByProperty
派生查找程序(仅限存储库)
请共享一些代码公共用户getUser(字符串用户名){Property properties=new Property(“userName”,userName);Set users=(Set)session.loadByProperty(User.class,properties);if(users!=null&&!users.isEmpty())for(User:users)return user;return null;}请同时共享用户/公司/策略类更新的说明..请参见上文无法使用共享的代码复制此说明。请使用测试记录上的问题。请升级到使用4.0.0.RC1-属性不再可用,它现在称为Filter。
@Repository
public interface UserRepository extends GraphRepository<User> {
User findByName(String name);
}
@Repository
public interface UserRepository extends GraphRepository<User> {
@Query("MATCH (user:User{name:{0}}) RETURN user")
User findUserByName(String name);
}
session.loadAll(Person.class, new Filter("firstName", "John"))