春天数据Neo4j APOC不执行但不出错

问题描述 投票:0回答:1

我正在尝试使用一些Neo4j的APOC程序,主要包括 apoc.periodic.commitapoc.periodic.iterate 使用 @Query 注解的Spring Data Neo4j仓库中。下面的查询将作为一个例子。

@Query("CALL apoc.periodic.commit(\"MATCH (n:SomeNodeLabel)-[*]->(x) WHERE ID(n) = {id} DETACH DELETE x RETURN COUNT(x) LIMIT {limit}\", {limit:10000});")
public void deleteXyz(@Param("id") Long id);

问题是,当以程序方式执行时(例如,在单元测试中),执行没有效果(没有删除任何内容),但也没有错误。在Web界面中执行时,一切正常。

在Neo4j的配置文件中,所有的查询都是启用白名单的。

java spring-boot neo4j spring-data-neo4j neo4j-apoc
1个回答
0
投票

为了防止将来有人面临同样的问题,我想出了办法,它与Spring Data Neo4j仓库中的@Query注解有关。

它与传递参数到存储过程查询的方式有关。用下面的版本代替上面的版本。

@Query("CALL apoc.periodic.commit(\"MATCH (n:SomeNodeLabel)-[*]->(x) WHERE ID(n) = {id} DETACH DELETE x RETURN COUNT(x) LIMIT {limit}\", {limit:10000, id: {id}});")
public void deleteXyz(@Param("id") Long id);
© www.soinside.com 2019 - 2024. All rights reserved.