用于Neo4j的Spring数据在实体之间生成动态关系

时间:2018-08-06 22:44:42

标签: neo4j spring-data-neo4j

我刚刚开始阅读和玩图db,尤其是Neo4j。

但是我没有遇到用例的解决方案,在我看来这很常见。假设我的系统中有User对象,并且我想维护用户之间的关系。 例子:

  1. 用户1->用户2-关系同级
  2. UserX-> UserY-关系父级
  3. UserY-> UserX-关系
  4. UserX-> UserZ-关系老师

我想动态存储关系(节点之间的边缘),而不是创建带有所有可能的关系实体的实体,并带有注释@Relationship。

稍后,我希望获得一个用户及其所有联系,但需要在运行时找出这种关系的类型。

弹簧数据有可能吗?还是根本无法使用Neo4j?

如果您能为我提供一些解决我问题的方法,我将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:0)

在您查询全部之后,似乎您只对关系的类型感兴趣,对吧?

您可以使用@RelationshipEntity并向其添加属性以定义其类型。

@RelationshipEntity(type = "USER_RELATION")
public class UserRelation {
   //... @StartNode/@EndNode/@Id
   private String type; // Here goes sibling, parent, etc.
}

在您的User实体中,您只需定义一个关系即可。

@Entity
public class User {
  // ... id, etc.
  @Relationship(type = "USER_RELATION")
  private List<UserRelation> userRelations;
}

这将始终查询与另一个用户的每个传出连接。