我有一个类帐户(在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。鲍勃邀请克里斯如下。
要加载帐户,我已编写此存储库:
interface AccountRepository extends GraphRepository<Account> {
Account findByAccountId(String id)
Account findByEmail(String email)
}
现在,我的问题是:当我加载Chris帐户时,我会收到Bob的邀请(没关系)。但是,我已经邀请了克里斯作为鲍勃,我不明白为什么。 对我来说,我应该邀请Chris一个邀请,但是Bob会邀请0。
答案 0 :(得分:0)
必须对任何现有的INCOMING关系setter进行注释,以避免在映射期间出现歧义。这在文档中指定:
@Relationship上的direction属性默认为OUTGOING。必须使用INCOMING方向显式注释由INCOMING关系支持的任何字段或方法。
http://neo4j.com/docs/ogm-manual/current/reference/#reference:annotating-entities:relationship