Spring 用于获取具有给定属性值的节点的密码查询
对于Spring数据图上的Cypher查询来说,这可能非常简单 我正在寻找什么样的Cypher查询来获取具有给定属性值的所有节点。那么,@Query注释中的Spring 用于获取具有给定属性值的节点的密码查询,spring,neo4j,spring-data,spring-data-graph,cypher,Spring,Neo4j,Spring Data,Spring Data Graph,Cypher,对于Spring数据图上的Cypher查询来说,这可能非常简单 我正在寻找什么样的Cypher查询来获取具有给定属性值的所有节点。那么,@Query注释中的?是什么,用于以下内容: @Query(???) List<MyObject> findByProperty1AndProperty2(String property1, String property2) @Query(?) 列出FindByProperty1和property2(字符串property1、字符串propert
?
是什么,用于以下内容:
@Query(???)
List<MyObject> findByProperty1AndProperty2(String property1, String property2)
@Query(?)
列出FindByProperty1和property2(字符串property1、字符串property2)
编辑:
因此,我通过添加Cypher依赖项来使用派生查询(如下面Michael所建议的)。但我似乎得到了以下错误:
字符串匹配正则表达式(?i)\Qreturn\E应为“但找到了”
我认为这是因为它似乎在创建一个如下查询:
start n=node:\uuuuu类型(className=“com.example.MyObject”),其中n.property1={0},n.property2={1}返回n
而不是
start n=node:_类型__(className=“com.example.MyObject”),其中n.property1={0}和n.property2={1}返回n
(请注意查询中的、
而不是和
)
提前感谢。请考虑到全局查询不是Neo4j的最佳选择,但当您运行Spring Data Neo4j时,这种情况会稍微减轻一点。:) 实际上,此查询不需要
@Query
注释
它构造一个派生查询来查看您的属性,如果一个属性被索引,它将使用该查询作为查询的起点,否则它将从“\uuuuuuu type\uuuu
”索引中提取所有条目
实际上,它将创建如下查询:
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)
列出查找到的ByProperty1和property2(字符串property1,字符串property2)
当然,cypher和gremlin在SDN中是可选的依赖项(b/c一些人默认不想引入scala/groovy)。您只需将cypher的maven依赖项添加到您的项目中即可
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j-cypher</artifactId>
<version>${neo4j.version}</version>
</dependency>
org.neo4j
neo4j-cypher
${neo4j.version}
请注意,全局查询不是Neo4j的最佳选择,但当您运行Spring Data Neo4j时,这种情况会稍微减轻一些。:)
实际上,此查询不需要@Query
注释
它构造一个派生查询来查看您的属性,如果一个属性被索引,它将使用该查询作为查询的起点,否则它将从“\uuuuuuu type\uuuu
”索引中提取所有条目
实际上,它将创建如下查询:
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)
列出查找到的ByProperty1和property2(字符串property1,字符串property2)
当然,cypher和gremlin在SDN中是可选的依赖项(b/c一些人默认不想引入scala/groovy)。您只需将cypher的maven依赖项添加到您的项目中即可
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j-cypher</artifactId>
<version>${neo4j.version}</version>
</dependency>
org.neo4j
neo4j-cypher
${neo4j.version}
谢谢您的回复,@Michael!但正如另一篇文章中提到的,当我使用派生查询时,我得到一个错误——“Cypher不可用,请将其添加到您的依赖项中”。知道原因吗?(我使用SDN 2.0.0.M1)在添加依赖项后,我得到一个错误,如:字符串匹配regex
(?I)\Qreturn\E'expected but,'found
我认为原因是它似乎在创建一个类似以下的查询:start n=node:\uuu类型(className=“com.example.MyObject”),其中n.property1={0},n.property2={1}返回n
,而不是start n=node:\uu类型(className=“com.example.MyObject”),其中n.property1={0}和n.property2={1}返回n
。注意我的查询中的,
而不是和
,你能为此提出一个JIRA问题吗?非常感谢。感谢你的回复,@Michael!但是正如另一篇文章中提到的,当我使用派生查询时,我得到一个错误——“Cypher不可用,请将它添加到你的依赖项中”。你知道为什么吗?(我使用的是SDN 2.0.0.M1)在添加依赖项之后,我得到了一个错误,比如:字符串匹配regex
(?I)\Qreturn\E'expected,但是,'found
我认为原因是它似乎在创建一个查询,比如:start n=node:\uu类型(className=“com.example.MyObject”),其中n.property1={0},n.property2={1}返回n
而不是start n=node:\uuuu types\uuuuu(className=“com.example.MyObject”),其中n.property1={0}和n.property2={1}返回n
。请注意我查询中的,
而不是和
,您可以为此提出JIRA问题吗?非常感谢。