2011-11-07 7 views
1

봄 데이터 그래프에 사이퍼 쿼리에 대한 새로운이기 때문에, 이것은 매우 사소한 수있는 값사이퍼 쿼리는 ...

내가 가지고있는 모든 노드를 가져올 사이퍼 쿼리 일 것입니다 무슨 찾고 있어요

몇개의 속성에 주어진 값. 그럼, 다음에 대한 @query 주석에 ???이 될 것입니다 :

@Query(???) 
List<MyObject> findByProperty1AndProperty2(String property1, String property2) 

편집 : 그래서, 나는 (마이클 아래에 의해 제안) 사이퍼 종속성을 추가하여 파생 된 쿼리를 사용 할 수 있었다.

start n=node:__types__(className="com.example.MyObject") where n.property1 = {0}, n.property2 = {1} return n

보다는

start n=node:__types__(className="com.example.MyObject") where n.property1 = {0} and n.property2 = {1} return n

:

string matching regex (?i)\Qreturn\E' expected but ,' found

나는 그것이 같은 쿼리를 작성하는 것 때문에이 생각 :하지만 아래의 오류가 될 것 같다

(대신 ,에 유의하십시오. 쿼리에서 10)

미리 감사드립니다.

답변

4

글로벌 쿼리는 Neo4j의 가장 좋은 점이 아니라 스프링 데이터 Neo4j를 실행하면서 약간 완화되었습니다. :)

사실이 검색어에는 @Query 특수 효과가 필요하지 않습니다.

어쨌든 속성을 보면 파생 된 쿼리가 생성됩니다. 인덱싱 된 경우 쿼리의 시작점으로 사용됩니다. 그렇지 않으면 "__type__"- 인덱스의 모든 항목을 가져옵니다.

실제로는 같은 쿼리 생성됩니다.이 주에 RC1으로 발표 될 예정이다 SDN의 현재 스냅 샷 빌드를 (사용하는 경우 그래서

start n=node:__types__(className="com.example.MyObject") 
where n.property1 = {0} and n.property2 = {1} 
return n 

을 당신은 다만 할 수 있습니다

List<MyObject> findByProperty1AndProperty2(String property1, String property2) 

물론 사이퍼와 놈아 SDN의 선택 의존성은 (나 어떤 사람들은 기본적으로 끝내 스칼라를/당기하지 않으려는 C /). 당신은 당신의 프로젝트에 사이퍼에 대한 받는다는 종속성을 추가해야

<dependency> 
    <groupId>org.neo4j</groupId> 
    <artifactId>neo4j-cypher</artifactId> 
    <version>${neo4j.version}</version> 
</dependency> 
+0

응답 해 주셔서 감사합니다. @Michael! 그러나 다른 게시물에서 언급했듯이 파생 쿼리를 사용할 때 "Cypher를 사용할 수 없으므로 종속성에 추가하십시오."라는 오류가 나타납니다. 어떤 아이디어? (내가 SDN 2.0.0.M1을 사용하고 있습니다.) – Saket

+0

의존성을 추가 한 후 다음과 같은 오류가 나타납니다.'정규 표현식'(? i) \ Qreturn \ E 'expected', 'found' – Saket

+0

그 이유는 다음과 같습니다. 왜냐하면 n.property1 = {0}, n.property2 = {1}이 아닌'n을 반환합니다. '와 같이'start n = node : __ types __ (className = "com.example.MyObject" n = node : __ types __ (className = "com.example.MyObject") 여기서 n.property1 = {0} 및 n.property2 = {1}은 n을 반환합니다. 내 쿼리에서'and' 대신','에주의하십시오. – Saket