2015-02-24 85 views
1

我试图实现与List参数简单的Spring Neo4j的库函数: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)

我哪里错了?

回答

1

不能肯定列表参数被转换。 单个实体被转换为其ID。

所以,如果你转换判据到他们的图形-ID的,你可以这样做:

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

谢谢,工作!还有一个问题,是否可以在不更改Java代码的情况下自动将列表转换为列表? – alexanoid 2015-02-25 07:52:19

1

试试这个:

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

即使这可能会奏效,查询并似乎有点奇怪,因为返回的列表将等于你在传递什么

+0

遗憾的是不与错误的工作:scala.MatchError:标准[ID = 641,名称=测试,说明=测试标准描述](类com.example.domain.model.decision.Criterion) – alexanoid 2015-02-25 07:57:03