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

时间:2015-11-27 11:09:20

标签: neo4j neo4j-ogm

我已经开始在我的应用程序中使用Neo4j-ogm,它就像固定对象域模型的魅力一样。当我知道哪个节点类型连接到具有已知类型的另一个节点时 - 它可以很容易地映射。 但是,在我看来,Neo4j图形数据库的通用性也能够处理未打字(或动态)域模型,并且我有理解如何用Neo4j-ogm实现它的概念问题。

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

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

那么如果用户想要将消息与某些Task节点类型相关联或将其引用到某些Contact节点类型,该怎么办?在我的应用程序中,可能在各种类型的节点之间具有大量(但有限的)连接集。所以我希望能够从特定节点获得所有类型的连接,无论这种连接类型或endNode类型如何?

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

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

但是当我开始这样做时 - 我需要一种方法如何将这些查询的结果自己转换为关系实体的结果。

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

提前谢谢你。

1 个答案:

答案 0 :(得分:0)

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

当前版本不支持运行时多态性 - 它可供讨论,因此根据它的运行方式,它可能会在未来版本中使用。