Neo4j-Ogm 用于动态域对象模型

Neo4j-Ogm for dynamic domain object model

我已经开始在我的应用程序中使用 Neo4j-ogm,它对固定对象域模型非常有用。当我知道哪个节点类型连接到另一个已知类型的节点时 - 它可以很容易地映射。 然而,在我看来,Neo4j 图形数据库的多功能性还在于能够使用非类型化(或动态)域模型,并且我在理解如何使用 Neo4j-ogm 实现它时遇到了概念性问题。

让我用一个例子来描述我的问题。

我有如下域对象:消息和功能。其中 Message 可以具有多个功能,并且一个 Feature 可以是许多消息的一部分。用 Neo4j-ogm 映射是完全可以的。

那么如果用户想要将消息关联到某个任务节点类型或将其引用到某个联系人节点类型怎么办?在我的应用程序中,各种类型的节点之间可能有大量(但有限)的连接集。所以我希望能够从特定节点获取所有类型的连接,而不管这种连接类型或 endNode 类型?

当然我可以使用密码来创建这样的连接:

MATCH (11) WHERE id(11)={11} MATCH (12) WHERE id(12)={12} MERGE (11)-[_0:`part_of` {$aid} ]->(12) RETURN id(_0) AS _0

但是当我开始这样做时 - 我需要一种方法来自己将此查询的结果与关系实体相互转换。

有没有一种使用 Neo4j-ogm 的优雅方式来做到这一点。也许可以创建一个全面的类型层次结构或允许将 Neo4j-ogm 一起用于固定和动态域对象模型的东西。

提前谢谢你。

Neo4j OGM 支持固定类型层次结构,因此如果您能够在这样的层次结构中表示您的域,您应该能够从单个实体中获取所有连接。这意味着结束节点也必须在此层次结构中表示。

运行 当前版本不支持时间多态性 - 虽然它有待讨论,因此根据进展情况,它可能会在未来的版本中使用。