2016-04-18 5 views
0

ich ein Programm, das die developping Neo4j-OGM-Bibliothek direkt verwendet (aka verwende ich keine Federkomponente) und meine Neo4j DB hat sich diese Art der Beziehung:Wie kann ich ein Abfrageergebnis Domänenobjekten zuordnen?

PARAMETER<-[:HAS_PARAMETER]-TASK-[:HAS_STEP]->STEP-[:HAS_PARAMETER]->PARAMETER STEP-[:HAS_STEP]->STEP PARAMETER-[:INITIALIZES]->PARAMETER

ich meine codiert alle Domänenklassen (PARAMETER, TASK und STEP).

Ich schreibe eine Abfrage wie (mit einem session.query Methodenaufruf): MATCH (:TASK)-[r*]->() return r

Kann ich das Ergebnis von meiner Anfrage zu Domain-Objekten direkt abbilden?

EDIT: Um schärfer, ich habe diese Klasse Aufgabe bekam

@NodeEntity 
    class Task { 
     @RelationShip(type = "HAS_STEP") 
     Set<Step> steps; 

     @RelationShip(type = "HAS_PARAMETER") 
     Set<Parameter> parameters; 
    } 

ich füllen wollen, eine Task-Instanz (mit Stufen und Parameter) und jeder Schritt zu füllen.

Antwort

2

Sie session.query() können Sie eine org.neo4j.ogm.model.Result zurückzukehren, die die Ergebnisse enthält. Dies wird nur in Neo4j OGM 2.0.1 unterstützt.

Das Zurückgeben eines Pfads wird nicht unterstützt. Daher müssen Sie die Knoten und Beziehungen, aus denen der Pfad besteht, z.

MATCH p=(t:TASK)-[r*]->() return t, nodes(p), rels(p)

Dann können Sie t Zugang vom Result und es wird ein hydratisiertes Aufgabe sein. Alternativ können Sie auf die Knoten von Result für alle hydratisierten Entitäten im Pfad zugreifen.

Weitere Beispiele sind in dem Test hier: https://github.com/neo4j/neo4j-ogm/blob/2.0/core/src/test/java/org/neo4j/ogm/persistence/session/capability/QueryCapabilityTest.java

BTW der Blog-Post, dass Christophe verweist noch gültig für die OGM-Funktionalität als auch, wenn Sie müssen verstehen, was abgebildet werden kann.

+0

Es funktioniert, um ein Objekt zu bekommen :) Aber, wie kann ich Objekt und berechneten Wert in meiner Abfrage mischen? Ich habe das Dokument von Christophe gelesen, aber die Anmerkungen @Query und QueryResult scheinen im neo4j-ogm nicht implementiert zu sein. – ChriX

+0

Geben Sie einfach Objekte und berechnete Werte zurück - Ihr Ergebnis enthält jeweils Werte. Die Entitäten werden Domänenobjekten zugeordnet, und die berechneten Werte sind unverändert verfügbar. Siehe https://github.com/neo4j/neo4j-ogm/blob/2.0/core/src/test/java/org/neo4j/ogm/persistence/session/capability/QueryCapabilityTest.java#L260 – Luanne

1

Ja, Sie können, gibt es eine komplette Blog-Post über sie:

http://graphaware.com/neo4j/2016/04/06/mapping-query-entities-sdn.html

+0

Es scheint spezifisch für Spring Data Framework :(Gibt es eine Lösung mit der Neo4j-OGM-Bibliothek? – ChriX

+0

Ich glaube, ich habe den Satzteil "SDN und Neo4J-OGM" missverstanden. Das sollte bedeuten, dass die Lösung entweder mit SDN oder Neo4J funktioniert -OGM – ChriX