2016-08-23 7 views
1

초보자 인 Neo4j에서 Spring 데이터 쿼리를 Neo4j 쿼리로 변환하려고합니다.neo4j 쿼리에 대한 스프링 데이터 쿼리

세 개의 테이블이 있습니다.

@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 

편집 :

(A)의 관계의 목록 (반환에 대한 의견을 응답 : 주치의 사람 : 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

답변 됨. 스프링 데이터 쿼리를 Cypher로 변환하는 것에 관한 다른 많은 질문을 할 수있는 기회를 얻을 때 문서를 읽으십시오. 명시적인 전환 가이드는 없지만 찾고있는 패턴과 사용할 수있는 매개 변수에 따라 직관적이어야합니다. – InverseFalcon

+0

Ok thanks man !!! –