不知道如何将其视为谓语

时间:2019-12-06 19:28:55

标签: spring-boot neo4j spring-data cypher spring-data-neo4j

我正在尝试在存储库中运行自定义查询,但是却收到InvalidDataAccessResourceUsageException。 “不知道如何将其视为谓词String(“ n.id ='1234'”)“。

public void myMethod() {
    myRepository.queryUsingCustomFilters("n.id = '1234'");
}

public interface MyRepository() extends Neo4jRepository<MyObject, String> {
    @Query("MATCH (n) WHERE {filter} RETURN n")
    List<MyObject> queryUsingCustomFilters(@Param("filter") String filter);
}

我现在有一个简单的示例,但是将来要传递的字符串可能会更复杂一些,例如“ n.id ='1234'AND(n.name ='one name'OR n.name ='另一个名字')“

1 个答案:

答案 0 :(得分:2)

我不认为您可以将整个子句/谓词/查询作为@Param传递。 如果您想在运行时构建查询,则可能希望使用较低级别的Neo4j OGM过滤器(请参阅https://neo4j.com/docs/ogm-manual/current/reference/#reference:filters)来构成查询

因此,在上述情况下,您只需根据需要添加Filter并将它们链接在一起以构建WHERE子句