在Spring Data Graph上成为Cypher Queries的新手,这可能非常简单......
我正在寻找什么是Cypher查询来获取具有两个属性的给定值的所有节点。那么,以下内容的@Query注释中的???
是什么:
@Query(???)
List<MyObject> findByProperty1AndProperty2(String property1, String property2)
修改 因此,我设法通过添加Cypher依赖项来使用派生查询(如下面Michael所建议的那样)。但我似乎得到了以下错误:
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
)
提前致谢。
答案 0 :(得分:4)
请考虑到全局查询不是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>