2015-02-24 86 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