【问题标题】:grails neo4j how to define relationship and their propertiesgrails neo4j 如何定义关系及其属性
【发布时间】:2014-08-05 10:36:56
【问题描述】:

在grails-neo4j插件中,如何定义节点之间的关系和关系的属性。

我可以将我的节点定义为域类,但如果我想连接节点,即我想以某种形式映射节点的关系。

我发现 spring-neo4j 框架非常适合这种情况,我可以将关系映射到 java 类,但没有找到任何 grails 兼容层。

【问题讨论】:

    标签: grails plugins neo4j


    【解决方案1】:

    插件不会将域类直接映射到 neo4j 中的节点或关系。它使用自己的结构,例如:

    root -> domainClass.name -> relation -> domain class instance
    

    我建议将您的域类定义为节点,并且插件应该正确处理它们。另一种方式:放弃插件>)

    【讨论】:

    • 我已将我的节点映射为域类,但我想知道关系,我可以将关系映射为域类或为此提供任何其他方法吗?
    • 是的,我只是想确定一下,否则我可以选择 spring-data-neo4j,在那里我可以轻松地将关系映射到 java 类。
    • 也许值得编写自己的映射器,例如 GMongo for mongo-db
    【解决方案2】:

    Neo4j Grails 插件尚不支持将域类映射为关系。我的清单上有这个要添加的东西。

    没错,Spring Data Neo4j 已经能够做到这一点。请注意,Spring Data Neo4j 和 Grails Neo4j 插件没有任何共同之处(除了它们使用 Neo4j 来持久化)。持久层是一个完全独立的代码库。

    【讨论】:

    • 您是否提供了任何其他方式来定义关系?我尝试了 spring-data-neo4j,但无法与 grails 一起使用。
    • 如果一个域类链接到另一个域类,当然会使用关系来对此建模。但是,还不可能将域类建模为关系,就像 SDN 的 RelationshipEntity 所做的那样。因此,关系目前在 Grails 插件中没有属性。
    【解决方案3】:

    现在比最初提出这个问题时要晚得多 - 4 年后。该插件现在支持将 Neo4j 关系创建为 Grails 域类,并且该关系可以具有属性。但是,对这些属性的约束还不起作用。以下是有效的单向关系的完整代码。

    package neo4j.authentication.demo
    
    import grails.neo4j.Relationship
    import groovy.transform.CompileStatic
    
    @CompileStatic
    class BelongsTo implements Relationship<Car, Owner> {
    
        String sinceWhen
    
        String toString() {
            sinceWhen
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-14
      相关资源
      最近更新 更多