Cypher查询以获取具有给定属性值的节点



对于Spring数据图上的Cypher查询来说,这可能是相当微不足道的…

我正在寻找什么是Cypher查询来获取具有一对属性的给定值的所有节点。那么,以下内容的@Query注释中的???是什么:

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

因此,我设法通过添加Cypher依赖关系来使用派生查询(如下面的Michael建议)。但我似乎得到以下错误:

string matching regex (?i)QreturnE' 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)

请考虑到全局查询不是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中可选的依赖项(b/c有些人不想默认拉入scala/groovy)。你只需要将cypher的maven依赖项添加到你的项目

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

相关内容

  • 没有找到相关文章

最新更新