【问题标题】:neo4j - Relationship between three nodesneo4j - 三个节点之间的关系
【发布时间】:2015-06-19 06:19:22
【问题描述】:

我对@9​​87654321@ 完全陌生,这些天我正在测试它。 我遇到的一个问题是如何使用Spring Data 正确实现涉及 3 个不同节点的关系。例如,假设我有 3 个@NodeEntitys:UserTagTaggableObject

如你所言,User 可以将Tag 添加到TaggableObject;我用@RelationshipEntity TaggingOperation 模拟这个操作。 但是,我找不到一种简单的方法来粘合关系中的 3 个实体。我的意思是,显而易见的选择是设置@StartNode User tagger@EndNode TaggedObject taggedObject;但是我怎样才能将Tag 添加到关系中?

【问题讨论】:

    标签: neo4j spring-data-neo4j


    【解决方案1】:

    我相信这被称为“超边缘”,它不是 Neo4j 直接支持的东西。您可以创建一个额外的节点来支持它,这很困难。所以你可以有一个TagEvent 节点,其架构如下:

    (:User)-[:PERFORMED]->(:TagEvent)
    (:Tag)<-[:USED]-(:TagEvent)
    (:TagObject)<-[:TAGGED]-(:TagEvent)
    

    另一种选择是将外键作为属性存储在关系或节点上。显然这不是很形象,但如果你只是需要它作为参考,那可能不是一个糟糕的解决方案。请记住不要使用内部 Neo4j ID,因为在未来的版本中可能不可靠。为此,您应该创建自己的 ID。

    【讨论】:

    • 感谢您的帮助,布赖恩。我认为您的TagEvent 与我的TagOperation 非常相似。那么,有没有办法在Spring Data Neo4j 中指定您的模式,使用注释等?你的方法是事务性的吗?我的意思是,我如何确保当 User 使用确定的 Tag 执行 TagEvent 时,会自动创建 USED 关系?
    • 抱歉,我之前没有使用过 Spring Data Neo4j ;) 我主要是使用 Cypher
    • 感谢您的帮助。那么,您认为在 Java 代码中实现它的最佳方式是什么?
    • 我会让其他人发表评论。我很久没有写太多 Java 了;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    相关资源
    最近更新 更多