2016-08-23 8 views
1

私はNeo4jで初心者です。私はSpringデータクエリをNeo4jクエリに変換したいと思います。neo4jクエリへのSpringデータクエリ

私は3つのテーブルを持っています。

@RelationshipEntity(type = "IS_ATTENDING_EVENT") 
public class IsAttendingEventDO { 

    @GraphId 
    private Long id; 
    @Property 
    private String isAttendingEventId; 
    @StartNode 
    private PersonDO personDO = new PersonDO(); 
    @EndNode 
    private EventDO eventDO = new EventDO(); 


@NodeEntity(label="Person") 
public class PersonDO { 

    @GraphId Long id; 
    @Property 
    private String personId; 
    @Property 
    private String name; 


@NodeEntity(label="Event") 
public class EventDO { 

    @GraphId 
    private Long id; 
    @Property 
    private String eventId; 

私の春データクエリです。

IsAttendingEventDO getByEventEventIdAndPersonPersonId(String eventId, String personId); 

このクエリをNeo4jクエリに変換すると助けてください。

よろしく、 Parth Solanki。

答えて

1

私はNeo4j developers manualを読んで、Cypherの構文と使い方を理解しておくべきだと思います。

Cypherを基本的に理解すると、非常に簡単なクエリです。興味のあるパターン(イベントに参加し、既に定義されているラベルを使用する人物)に合わせて、人物、イベント、および関係に変数を指定し、WHERE句を追加して、一致する人物とイベントを制限します指定されたidパラメータに、それらの述語が適用マッチしたパターンに合った関係を返す:

MATCH (p:Person)-[rel:IS_ATTENDING_EVENT]->(e:Event) 
WHERE p.id = {personId} AND e.id = {eventId} 
RETURN rel 

EDIT:

の関係のリスト(返却についてのコメントに答える:参加者を: Event)ここで、指定された唯一のパラメーターはeventIdです。

ノードからリストを作成するには、COLLECT()関数を使用します。

eventIdのみに基づいて関係を取得しようとすると、:Personノードに変数を指定する必要はありません。これは、述語を適用する必要がないため、それを使用していないか、それを返すあなたが興味を持っているのは、イベントに出席していて、与えられたeventIdに関係する人々の関係、そしてそれらの返された関係のコレクションを返すことだけです。

MATCH (:Person)-[rel:IS_ATTENDING_EVENT]->(e:Event) 
WHERE e.id = {eventId} 
RETURN COLLECT(rel) 

ここでも、開発者の取扱説明書を読んで、ともあなたを助けるためにCypher refcardを使用してください。あなたが基本的なドキュメントを読んだときに、あなたが求めている質問の種類は非常に簡単です。

+0

こんにちは、ありがとうございます。私はこれを試し、あなたに知らせる...また、私は別のクエリのリストを持っている findByEventEventId(String eventId);だからこれはリストを返すので、どうすればこのクエリを作ることができますか? –

+0

回答しました。チャンスが得られたら、ドキュメントを読んでください。そうすれば、SpringのデータクエリをCypherに変換する際の他の多くの質問に役立ちます。明示的な変換ガイドはありませんが、求めているパターンと利用可能なパラメータに基づいて直観的になるはずです。 – InverseFalcon

+0

Okありがとう!!! –

関連する問題