SDN 4.2.1을 사용하여 Neo4J에서 노드와 관계를 저장하고로드합니다.findBy에서 방향 지정 스프링 데이터 Neo4J의 깊이> 0 인 쿼리
지금까지 깊이 매개 변수가 2 인 findByXXX 메서드를 사용했습니다. 이제는 깊이를 3으로 늘려야하지만 쿼리가 느려지고 그 이유를 알 수 있습니다. 실행 된 쿼리는 관계의 방향. 여기
는 로그에서 실행 된 쿼리입니다 (20 초 이상 소요) :o.n.o.drivers.bolt.request.BoltRequest : Request: MATCH (n:`Property`) WHERE n.`id` = { `id_0` } WITH n MATCH p=(n)-[*0..3]-(m) RETURN p, ID(n) with params {id_0=P31}
을 나는 방향와 쿼리 를 다시 작성하면 매우 빠른됩니다 :
MATCH (n:`Property`) WHERE n.`id` = "P31" WITH n MATCH p=(n)-[*0..3]->(m) RETURN p, ID(n)
내 경우 GraphRepository 인터페이스의 findByXXX 함수 선언에서 "나가는"관계 만 원한다는 것을 명시 할 방법을 찾을 수 없습니다. 방향을 알려주는 "@Depth"주석과 같은 매개 변수가 있습니까?
감사합니다. 사용자 지정 쿼리를 사용합니다. – Pierre
가변 깊이 매개 변수를 사용하여 쿼리를 작성하는 방법이 있습니까? 나는 그것을하려고 노력했다 : ''@Query ("MATCH (n :'Item') WHERE n.'id' = {id} WITH n MATCH p = (n) - [* 0 .. {depth (Item), node (p), rels (p) ") ItemResult findByid (@Param ("id ") 문자열 ID, @Param ("깊이 ") int 깊이);" SyntaxError : '매개 변수 맵을 MATCH 패턴에서 사용할 수 없습니다 (리터럴 맵을 대신 사용하십시오). '{깊이} '를 (를)'3 '으로 바꿔도 괜찮습니다 ... – Pierre