【问题标题】:Spring data for neo4j generating dynamic relationships between entitiesNeo4j 的 Spring 数据生成实体之间的动态关系
【发布时间】:2018-08-06 22:44:41
【问题描述】:

我刚开始阅读和使用 graph db,尤其是 Neo4j。

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

  1. User1 -> User2 - 关系兄弟姐妹
  2. UserX -> UserY - 关系 parent
  3. UserY -> UserX - 关系 child
  4. UserX -> UserZ - 关系老师

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

稍后,我想获取一个用户及其所有连接,但在运行时要弄清楚关系的类型。

弹簧数据可以做到这一点吗?或者可能根本不可能使用 Neo4j?

如果您能指点我阅读以解决我的问题,我将不胜感激。

谢谢。

【问题讨论】:

    标签: neo4j spring-data-neo4j


    【解决方案1】:

    你好像只对查询所有的关系类型感兴趣,对吧?

    您可以使用 @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;
    }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-07
      • 2021-04-07
      • 1970-01-01
      • 2020-04-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多