gpt4 book ai didi

java - Spring-Data-Neo4j注解Cypher查询、匹配参数

转载 作者:行者123 更新时间:2023-12-01 11:29:56 32 4
gpt4 key购买 nike

我正在尝试使用 Spring-Data-Neo4j-3.1.4 参数化带注释的 Cypher 查询的匹配部分,如下所示。第一种方法有效。在第二个方法中将节点类型作为参数传递失败。

public interface NodeRepository extends CrudRepository<Node, Long> {

@Query("START n=node(*) MATCH (n:Organization) RETURN n")
List<Node> findByNodeType();

@Query("START n=node(*) MATCH (n:{0}) RETURN n")
List<Node> findByNodeType(String nodeType);
}

异常(exception)是:

org.springframework.dao.InvalidDataAccessResourceUsageException: 
Error executing statement START n=node(*) MATCH (n:{0}) RETURN n;
nested exception is org.springframework.dao.InvalidDataAccessResourceUsageException:
Error executing statement START n=node(*) MATCH (n:{0}) RETURN n;
nested exception is Invalid input '{':
expected whitespace or a label name (line 1, column 26)
"START n=node(*) MATCH (n:{0}) RETURN n"
at org.springframework.data.neo4j.support.query.CypherQueryEngineImpl.query(CypherQueryEngineImpl.java:61)
at org.springframework.data.neo4j.repository.query.GraphRepositoryQuery.dispatchQuery(GraphRepositoryQuery.java:107)
at org.springframework.data.neo4j.repository.query.GraphRepositoryQuery$1.doWithGraph(GraphRepositoryQuery.java:89)
at org.springframework.data.neo4j.support.Neo4jTemplate.doExecute(Neo4jTemplate.java:457)
at org.springframework.data.neo4j.support.Neo4jTemplate.access$000(Neo4jTemplate.java:87)
at org.springframework.data.neo4j.support.Neo4jTemplate$2.doInTransaction(Neo4jTemplate.java:471)

如何将节点作为参数传递给 Cypher 查询?

最佳答案

将查询更改为:MATCH (n:Organization) RETURN n

您可以尝试:MATCH (n) WHERE {0} IN labels(n) RETURN n

但是效率不高,为什么要这样做呢?

由于查询规划器的原因,标签还不允许作为参数。

关于java - Spring-Data-Neo4j注解Cypher查询、匹配参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30490944/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com