Cypher-запрос для получения узлов с заданными значениями свойств
Будучи новичком в 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 ответ
Пожалуйста, примите во внимание, что глобальные запросы - не самая лучшая точка 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>