我对Neo4j
完全不熟悉,而且我现在正在测试它。
我遇到的一个问题是如何使用Spring Data
正确实现涉及3个不同节点的关系。例如,假设我有3 @NodeEntity
s:User
,Tag
和TaggableObject
。
正如您所说,User
可以向Tag
添加TaggableObject
;我使用@RelationshipEntity TaggingOperation
对此操作进行建模。
但是,我找不到一种简单的方法来粘合关系中的3个实体。我的意思是,显而易见的选择是设置@StartNode User tagger
和@EndNode TaggedObject taggedObject
;但是我怎样才能将Tag
添加到关系中?
答案 0 :(得分:4)
这被称为" hyperedge",我相信,并不是Neo4j直接支持的东西。你可以创建一个额外的节点来支持它,很难。所以你可以有一个TagEvent
节点,其架构如下:
(:User)-[:PERFORMED]->(:TagEvent)
(:Tag)<-[:USED]-(:TagEvent)
(:TagObject)<-[:TAGGED]-(:TagEvent)
另一种方法是将外键存储为关系或节点上的属性。显然,这不是很有图形,但如果你只是需要它作为参考,可能不是一个糟糕的解决方案。请记住,不要使用内部Neo4j ID,因为将来的版本可能不可靠。您应该为此目的创建自己的ID。