关系无效

时间:2017-06-10 17:57:14

标签: spring-data-neo4j

我有一个类帐户(在Groovy中):

@NodeEntity
class Account {
    @GraphId
    Long id

    String accountId
    String firstname
    String lastname

    @Relationship(type = 'HAS_INVITED', direction = Relationship.INCOMING)
    List<Account> invitations = []

    String getName() {
        if (firstname && lastname) {
            return "$firstname ${lastname[0]}."
        }

        return email
    }

    @Override
    int hashCode() {
        if (id) {
            return id.hashCode()
        } else {
            return 0
        }
    }

    @Override
    boolean equals(Object obj) {
        if (obj.is(this)) {
            return true
        }

        if (obj instanceof Account) {
            return obj.id == id
        }

        return false
    }

    @Override
    String toString() {
        "$email"
    }
}

在我的数据库中,我创建了两个帐户Chris和Bob。鲍勃邀请克里斯如下。 enter image description here

要加载帐户,我已编写此存储库:

interface AccountRepository extends GraphRepository<Account> {
    Account findByAccountId(String id)

    Account findByEmail(String email)

}

现在,我的问题是:当我加载Chris帐户时,我会收到Bob的邀请(没关系)。但是,我已经邀请了克里斯作为鲍勃,我不明白为什么。 对我来说,我应该邀请Chris一个邀请,但是Bob会邀请0。

1 个答案:

答案 0 :(得分:0)

必须对任何现有的INCOMING关系setter进行注释,以避免在映射期间出现歧义。这在文档中指定:

  

@Relationship上的direction属性默认为OUTGOING。必须使用INCOMING方向显式注释由INCOMING关系支持的任何字段或方法。

http://neo4j.com/docs/ogm-manual/current/reference/#reference:annotating-entities:relationship