2017-03-07 14 views
2

ユーザーはWebサイトにログインし、さまざまなイベントを作成します。このイベントはノードとしてneo4jデータベースに保存され、ユーザーとイベントノードの間で "EVENT_CREATOR"のrealtionshipを作成します。neo4j Java初心者。 Cypher実行エンジン

私のWebサイト上で(Play2フレームワークを使用して)すべてのユーザーのイベントのページングを実装しようとしています。たとえば、ユーザーが最初のページにアクセスする場合は最初の10個のイベントを読み込みます。 2ページ目は10th- 20日のイベントをロードする、というように...

この

は私のクエリです:私は、ユーザーが作成したすべてのイベントを取得しています現時点では

match(n); 
... 
skip k; 
limit 10; 
return n; 

とに追加します配列リスト。

private static List<PublicEvent> getEvents(int page, int pageSize) { 

    List<PublicEvent> events = new ArrayList<PublicEvent>(); 

    GraphDatabaseService db = Neo4JHelper.getDatabase(); 
    try (Transaction tx = db.beginTx()) { 

     Index<Node> userIndex = db.index().forNodes(ModelIndex.Users); 

     IndexHits<Node> userNodes = userIndex.get(ModelGraphProperty.UserProfile.UserName, SessionUtilities.getCurrentUser()); 
     Node me = userNodes.next(); //current logged in user 

     PagingIterator paginator = new PagingIterator(me.getRelationships(GraphRelation.RelTypes.EVENT_CREATOR).iterator(), pageSize); // get all the events that were created by this user 
     paginator.page(page); 

     // adding all the created events by this user to an array 
     if (paginator.hasNext()) { 
      Relationship eventCreator = (Relationship)paginator.next(); 
      Node event = eventCreator.getOtherNode(me); 
      events.add(new PublicEvent(event)); 
     } 

     tx.success(); 
    } 

    db.shutdown(); 

    return events; 
} 

私はサイファークエリを実行するためのコードを更新したいと私はそれが二番目のパラメータを期待している

GraphDatabaseService db = Neo4JHelper.getDatabase(); 
ExecutionEngine execEngine = new ExecutionEngine(db); //HERE I GET AN ERROR 
ExecutionResult execResult = execEngine.execute("MATCH (n) RETURN n"); 
String results = execResult.dumpToString(); 
System.out.println(results); 

(例https://www.tutorialspoint.com/neo4j/neo4j_cypher_api_example.htmを使用して)次のコード行を追加します。ロガーを。エラーは何ですか?または何か間違っていますか?

答えて

1
RestGraphDatabase db= (RestGraphDatabase)Neo4JHelper.getDatabase(); 
     RestCypherQueryEngine engine=new RestCypherQueryEngine(db.getRestAPI()); 
     Map<String, Object> params = new HashMap<String, Object>(); 
     params.put("id", eventId); 
     String query="match (s) where id(s) = {id} return s;"; 
     QueryResult result=engine.query(query,params); 

     if(result.iterator().hasNext()) { 

      //HERE PUT WHATEVER YOU NEED 
     } 

のドキュメントを見てみましょう:

https://neo4j.com/docs/java-reference/current/