2016-03-25 11 views
0

Ich habe eine RepositorySpring Data Neo4j Zuordnung nicht Klassenfelder Eigenschaften zum Knoten

@Repository 
public interface PointOfInterestRepository extends GraphRepository<Poi> { 
    // currently empty 
} 

ohne benutzerdefinierte Methoden definiert. Also benutze ich die von save(T... entities), die vordefiniert sind.

Und ich habe meine Poi Klasse als

@NodeEntity(label = "PointOfInterest") 
public class Poi { 

    @JsonIgnore 
    @GraphId 
    Long neo4jId; 

    @JsonManagedReference("node-poi") 
    @JsonProperty("node") 
    @Relationship(type = "BELONGS_TO", direction = Relationship.UNDIRECTED) 
    private Node node; 

    @JsonProperty("id") 
    @Property(name = "poiID") 
    private final String id; 

    @JsonProperty("uris") 
    @Property(name = "uris") 
    private final Set<URI> correspondingURIs = new HashSet<>(); 

    /* Some more stuff I skip here*/ 
} 

mit Getter für die Felder folgt.

Zur Zeit bin ich in der Lage solche Pois Neo4j und Abrufen von ihnen zurück, zu retten, aber wenn ich versuche, über Chiffre mit diesen Knoten in der Datenbank zu arbeiten, scheint es, dass die Felder nicht Neo4j Eigenschaften zugeordnet.

Ich dachte, Spring-Data-Neo4j würde meine Klassenfelder zu Neo4j Graph Eigenschaften konvertieren. Liege ich damit falsch?

Hinweis: Die save Anrufe scheint sehr gut zu funktionieren. Danach kann ich die Knoten in der Datenbank sehen und danach findAll() aufrufen und mir alle gespeicherten Knoten (Pois) mit allen korrekten Werten zurückgeben. Aber irgendwie kann ich innerhalb der Datenbank keine Eigenschaften/Felder sehen.

+0

Nicht sicher, was Ihre eigentliche Frage ist. Was meinst du mit "Aber irgendwie kann ich in der Datenbank keine Eigenschaften/Felder sehen." und "aber wenn ich versuche, mit diesen Knoten in der Datenbank über eine Chiffre zu arbeiten, scheint es, dass die Felder nicht den Eigenschaften von neo4j zugeordnet sind." ??? –

+0

Wenn ich mich bei neo4j anmelde und versuche, cypher-Abfragen auszuführen, kann ich nicht auf Eigenschaften zugreifen, weil sie nicht da zu sein scheinen, hilft dir das? – Matthias

+0

Also meinst du mit dem neo4j Browser siehst du die Knoten aber es gibt keine Eigenschaften? Und über SDN können Sie die Eigenschaften abfragen und sehen? Entschuldigung, dass ich dieselbe Art von Frage gestellt habe, aber schwer herauszufinden, was das ist – Luanne

Antwort

2

Das Problem sind die letzten Felder. SDN wäre nicht in der Lage, Werte in die Entity zu schreiben, wenn sie aus dem Graph geladen werden, da diese Felder final sind (und SDN wird nur den Standard-Konstruktor ohne Argumente verwenden), und daher werden finale Felder nicht unterstützt. Das Entfernen des Finales sollte dies beheben.

Verwandte Themen