Neo4J 不知道如何比较

Neo4J Don't know how to compare that

我正在尝试使用 List 参数实现简单的 Spring Neo4j 存储库函数:

@Query("MATCH (c:Criterion) WHERE c IN {0} return c")
List<Criterion> getAllCriteria(List<Criterion> criteria);

执行后出现以下错误:

org.neo4j.cypher.IncomparableValuesException: Don't know how to compare that. Left: Node[513]{name:"Test",description:"Test description"} (NodeProxy); Right: Criterion[id=513,name=Test,description=Test description] (Criterion)

我哪里错了?

试试这个:

@Query("MATCH (c:Criterion) WHERE ID(c) IN {0} return c")
List<Criterion> getAllCriteria(List<Criterion> criteria);

尽管这可能有效,但您的查询似乎有点奇怪,因为返回的列表将等于您传入的列表。

不确定参数列表是否已转换。 单个实体 被转换为其 ID。

因此,如果您将标准转换为它们的图形 ID,您可以这样做:

@Query("MATCH (c:Criterion) WHERE ID(c) IN {0} return c")
List<Criterion> getAllCriteria(List<Long> criteria);