我正在尝试在存储库中运行自定义查询,但是却收到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 ='另一个名字')“
答案 0 :(得分:2)
我不认为您可以将整个子句/谓词/查询作为@Param
传递。
如果您想在运行时构建查询,则可能希望使用较低级别的Neo4j OGM过滤器(请参阅https://neo4j.com/docs/ogm-manual/current/reference/#reference:filters)来构成查询
因此,在上述情况下,您只需根据需要添加Filter
并将它们链接在一起以构建WHERE
子句