2017-06-10 5 views
0

Ich habe eine Klasse Konto wie (in Groovy) bekommt:Ungültige Beziehung

@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" 
    } 
} 

In meiner Datenbank habe ich erstellt 2 Konten Chris und Bob. Bob hat Chris wie unten eingeladen.

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

    Account findByEmail(String email) 

} 

Nun mein Problem: enter image description here

Konten zu laden, habe ich dieses Repository geschrieben, wenn ich das Konto, das ich Bob bekommen Chris laden, wie eingeladen (es ist ok). Aber ich habe Chris als Einladung zu Bob eingeladen und ich verstehe nicht warum. Für mich hätte ich eine Einladung für Chris, aber 0 für Bob.

+0

Haben Sie eine Setter für 'Liste invitations' haben? Wenn ja, muss es auch von @Relationship kommentiert werden. –

+0

Großartig! Es klappt. – ChriX

Antwort

0

Alle vorhandenen Setter für INCOMING-Beziehungen müssen mit Anmerkungen versehen werden, um Mehrdeutigkeiten beim Mapping zu vermeiden. Dies wird in der Dokumentation angegeben:

Das Richtungsattribut auf einem @Relationship-Standard ist OUTGOING. Alle Felder oder Methoden, die durch eine INCOMING-Beziehung unterstützt werden, müssen explizit mit einer INCOMING-Anweisung versehen sein.

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

+0

Ich habe die Punktfelder verpasst UND Setter-Methoden müssen annotiert werden. – ChriX