Cypher-запрос для получения узлов с заданными значениями свойств - PullRequest
1 голос
/ 07 ноября 2011

Будучи новичком в Cypher Queries на Spring Data Graph, это может быть довольно тривиально ...

Я ищу, что будет запросом Cypher для извлечения всех узлов, которые имеют данное значение для парысвойства.Итак, что будет ??? в аннотации @Query для следующего:

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

РЕДАКТИРОВАТЬ: Итак, мне удалось использовать производные запросы, добавив зависимости Cypher (как было предложеноМайкл ниже).Но я, кажется, получаю следующую ошибку:

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

Я думаю, это потому, что создается запрос вроде:

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

(обратите внимание на , вместо and в запросе)

Заранее спасибо.

1 Ответ

4 голосов
/ 09 ноября 2011

Пожалуйста, примите во внимание, что глобальные запросы - не самая лучшая точка Neo4j, но поскольку вы используете Spring Data Neo4j, это немного облегчается. :)

На самом деле вам не нужна аннотация @Query для этого запроса.

Он в любом случае создает производный запрос, глядя на ваши свойства, если он проиндексирован, он будет использовать его в качестве отправной точки для вашего запроса, в противном случае он извлечет все записи из индекса __type__.

На самом деле это создаст запрос вроде:

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

Так что, если вы используете текущую сборку снимков SDN (которая будет выпущена как RC1 на этой неделе. Вы можете просто сделать:

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

Конечно, cypher и gremlin являются необязательными зависимостями в SDN (т.к. некоторые люди не хотят включать scala / groovy по умолчанию). Вам просто нужно добавить зависимость maven для cypher в ваш проект

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