neo4j - 三个节点之间的关系

时间:2015-04-13 19:47:13

标签: neo4j spring-data-neo4j

我对Neo4j完全不熟悉,而且我现在正在测试它。 我遇到的一个问题是如何使用Spring Data正确实现涉及3个不同节点的关系。例如,假设我有3 @NodeEntity s:UserTagTaggableObject

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

1 个答案:

答案 0 :(得分:4)

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

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

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