2014-04-23 54 views
0

我已成功合併Play!使用spring-data-neo4j構建2.2.2應用程序3.如何在Java中使用Neo4j RestAPI和CypherResult

我現在必須將一個簡單的Java組件與neo4j結合在一起。我在我的新項目中使用neo4j-rest-graphdb-2.0.1在 。問題如下:

隨着spring-data-neo4j我有一個用戶模型類與@NodeEntity和@TypeAlias(「_用戶」)註釋。所以,我可以執行的Cypher查詢是這樣的:

@Query("MATCH (User:_User) WHERE User.network = {0} RETURN User") 
    Iterable<User> executeFilterTest(String filterValue); 

這將返回我的,我可以遍歷用戶模型類對象的列表。

在我的Java項目

但現在我這樣做:

RestAPI restAPI = new RestAPIFacade("http://localhost:7474/db/data","",""); 

    CypherResult theResult = restAPI.query("MATCH (User:User) WHERE User.userid = '" + id + "' RETURN User", new HashMap<String, Object>()); 

我不知道如何使用CypherResult?有沒有辦法像我一樣在我的spring-data-neo4j實例中返回與列表相同的用戶模型對象?

回答

0

CypherResult返回cypher結果,包括節點和rels作爲映射的迭代器。

Btw。你應該使用參數,而不是字符串連接的ID:

RestAPI restAPI = new RestAPIFacade("http://localhost:7474/db/data","",""); 

... 
Map<String, Object> params = new HashMap<String, Object>(); 
params.put("id",id); 
CypherResult theResult = restAPI.query("MATCH (User:User) WHERE User.userid = {id} RETURN User", params); 
for (Node user : theResult.to(Node.class)) { 

} 

to()方法也需要能夠創建結果對象轉換器。

一般來說,我建議使用JDBC driver而不是Java-Rest-Binding。

+0

表明JBDC驅動程序比非彈簧應用程序的Java-Rest-Binding更好 - 或者僅僅是這種情況? – gmjordan

0

我認爲你必須編寫自己的「映射」代碼,將CypherResult的結果轉換爲POJO列表。我沒有這樣做,但看着你正在使用的Neo4j REST綁定,也許這是可能的。

Spring Data Neo4j是爲了方便這樣的事情而構建的。也就是說,可能使用QueryResult(而不是CypherResult)和「to」重載/方法之一(您可能必須編寫自己的ResultConverter等)。最糟糕的情況是你不得不將結果手動翻譯成你的POJO。

這是基於最新的綁定,順便說一句。

再次,我沒有嘗試過任何這個,但也許這是一個起點。我很想知道你最終會提出什麼!

相關問題