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

用于动态域对象模型的Neo4j Ogm,neo4j,neo4j-ogm,Neo4j,Neo4j Ogm,我已经开始在我的应用程序中使用Neo4j ogm,它就像固定对象域模型的魅力一样。当我知道哪个节点类型连接到另一个已知类型的节点时,它可以很容易地映射。 然而,在我看来,Neo4j图形数据库的版本性还在于能够使用非类型(或动态)域模型,我在理解如何使用Neo4j ogm实现这一点上遇到了概念上的问题 让我用一个例子来描述我的问题 我有域对象,比如:Message和Feature。其中消息可以具有多个功能,并且一个功能可以是许多消息的一部分。使用Neo4j ogm进行映射完全可以 然后,如果用户希

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

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

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

然后,如果用户希望将消息与某个任务节点类型关联,或者将其引用到某个联系人节点类型,该怎么办?在我的应用程序中,在各种类型的节点之间可以有一组大的(但有限的)连接。所以我希望能够从一个特定的节点获得所有类型的连接,而不管这种连接类型或端节点类型是什么

当然,我可以使用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用于固定和动态域对象模型


先谢谢你

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


运行时多态性在当前版本中不受支持,但仍有待讨论,因此取决于它的运行方式,它可能会在将来的版本中出现。

感谢您的回答。尽管如此,我还是决定坚持使用Neo4j ogm,因为它是一个非常好的库,并且比我的工具访问Neo4j要先进得多。为了解决固定域的问题,我计划使用Cypher查询从任何节点获取未映射的连接。