2016-04-18 10 views
0

私は直接のNeo4j-OGMライブラリを使用しています(別名、私は任意のSpringコンポーネントを使用していない)と私のNeo4j DBは関係のこの種を持っているプログラムを研究開発をしています:クエリ結果をドメインオブジェクトにマップするにはどうすればよいですか?

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

私はすべての私のコード化ドメインクラス(PARAMETER、TASK、STEP)。

私は(session.queryメソッド呼び出しで)のようなクエリを記述します。 MATCH (:TASK)-[r*]->() return r

私が直接私のクエリからドメインオブジェクトに結果をマッピングすることはできますか?

EDIT: は、よりシャープにするために、私はこのクラス

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

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

私は(ステップおよびパラメータを持つ)タスクインスタンスを埋めたいタスク

、各ステップがあまりにも満たされるんです。

答えて

2

あなたは結果が含まれているorg.neo4j.ogm.model.Resultを返すためにsession.query()を使用することができます。これは、Neo4j OGM 2.0.1でのみサポートされています。

パスを返すことはサポートされていないため、パスを構成するノードとリレーションシップを返す必要があります。

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

その後、あなたはResultからtにアクセスすることができますし、それは水和タスクになります。または、パス内のすべての水和エンティティについて、Resultからノードにアクセスすることもできます。

より多くの例は、ここではテストしている:クリストフ参照が同様にあなたがマップすることができるかを理解する必要がある場合は、まだOGMの機能に対して有効であるhttps://github.com/neo4j/neo4j-ogm/blob/2.0/core/src/test/java/org/neo4j/ogm/persistence/session/capability/QueryCapabilityTest.java

BTWのブログ記事。

+0

これはオブジェクトを取得するために機能します:)しかし、オブジェクトと計算値をクエリにどのように混在させることができますか?私はChristopheの文書を読んでいますが、@ QueryとQueryResultの注釈はneo4j-ogmでは実装されていないようです。 – ChriX

+0

オブジェクトと計算値を返すだけで、結果にはそれぞれの値が含まれます。エンティティはドメインオブジェクトにマップされ、計算された値はそのまま使用できます。 https://github.com/neo4j/neo4j-ogm/blob/2.0/core/src/test/java/org/neo4j/ogm/persistence/session/capability/QueryCapabilityTest.java#L260を参照してください。 – Luanne

1

することができますはい、それについての完全なブログの記事があります:

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

+0

これは、Spring Dataフレームワークに固有のようです:(neo4j-ogmライブラリの解決策はありますか? – ChriX

+0

私は文章の部分「SDNとNeo4J-OGM」を誤解していましたので、SDNまたはNeo4J -OGM。 – ChriX

関連する問題