1

java-rest-binding1.8.M07でneo4j1.9.M01バージョンを使用していますが、プロパティ「URL」が「ARREL」のneo4jデータベースからノードを取得することを目的としたこのコードに問題があります。 、restを介してクエリ言語を使用します。問題はトランザクション内でのみ発生し、例外をスローするようですが、それ以外の場合はうまく機能します:

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()*で失敗し、例外をスローするnullオブジェクトが返されます。

問題は、必要なすべてのクエリの処理に時間がかかりすぎるため、トランザクションを使用してクエリを最適化する必要があることです。トランザクションの使用を避けるために、クエリにいくつかの操作を結合しようとする必要がありますか?

4

2 に答える 2

0

java-rest-binding を最新バージョン (1.8) に更新できますか? その間に、REST バッチ操作をトランザクション セマンティクスのある場所に自動的に適用するバージョンがありました。

したがって、表示されるトランザクションは実際のトランザクションではなく、バッチ レスト オペレーションとして実行される操作を記録するだけです。tx.success/finish

トランザクション内でクエリを実行しますが、tx が終了した後にのみ結果にアクセスします。その後、結果が表示されます。

これは、たとえば、サーバーに一度に多くの暗号クエリを送信し、後で結果をすべて一度に利用できるようにするのに役立ちます。

はい、@ulkas はパラメーターを使用しますが、そのようではありません。

START n=node(*) WHERE n.URL =~ {URL} RETURN n

params: { "URL" : "http://your.url" }

SQL 準備済みステートメントと同様に、params を使用する場合は引用符は必要ありません。

于 2012-12-19T18:02:37.437 に答える
0

次の場所に一重引用符を追加してみてください。

START n=node(*) WHERE n.URL =~ '{URL}' RETURN n
于 2012-12-18T09:29:06.670 に答える