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