我正在使用neo4j 1.9.M01版本和java-rest-binding 1.8.M07,並且我的代碼有問題,目的是從neo4j數據庫中獲取節點屬性「URL」是「ARREL」,通過休息使用查詢語言。這些問題似乎只發生在事務內,拋出一個異常,但在其他方面效果很好:在事務中使用QueryEngine的異常
RestGraphDatabase graphDb = new RestGraphDatabase("http://localhost:7474/db/data");
RestCypherQueryEngine queryEngine = new RestCypherQueryEngine(graphDb.getRestAPI());
Node nodearrel = null;
Transaction tx0 = gds.beginTx();
try{
final String queryStringarrel = ("START n=node(*) WHERE n.URL =~{URL} RETURN n");
QueryResult<Map<String, Object>> retornar = queryEngine.query(queryStringarrel, MapUtil.map("URL","ARREL"));
for (Map<String,Object> row : retornar)
{
nodearrel = (Node)row.get("n");
System.out.println("Arrel: "+nodearrel.getProperty("URL")+" id : "+nodearrel.getId());
}
tx0.success();
}
(...)
但發生異常:*例外TX0:錯誤讀數JSON' *在該行每個執行返回QueryResult對象。
我也試圖與ExecutionEngine(交易之間)做到這一點:
ExecutionEngine engine = new ExecutionEngine(graphDb);
String ARREL = "ARREL";
ExecutionResult result = engine.execute("START n=node(*) WHERE n.URL =~{"+ARREL+"} RETURN n");
Iterator<Node> n_column = result.columnAs("n");
Node arrelat = (Node) n_column.next();
for (Node node : IteratorUtil.asIterable(n_column))
(...)
但它也未能在* n_column.next()*返回拋出異常空對象。
問題是我需要使用事務來優化查詢,因爲如果不是它需要太多時間來處理我需要做的所有查詢。我是否應該嘗試將多個操作加入到查詢中,以避免使用這些事務?
感謝您的答案,但異常似乎仍然存在。 – p3r1