2013-04-22 106 views
0

目前我有這個類。當我刪除QueryResult時,它運行主方法並自行完成。當我添加QueryResult時,我需要手動終止運行。我怎樣才能讓這個優雅地結束?謝謝。neo4j QueryResult不會退出

public class TestConnect { 
    public static void main(String[] args) { 
    System.out.println("starting test"); 
    final RestAPI api = new RestAPIFacade("http://localhost:7474/db/data"); 
    System.out.println("API created"); 
    final RestCypherQueryEngine engine = new RestCypherQueryEngine(api); 
    System.out.println("engine created"); 
    QueryResult<Map<String,Object>> result = engine.query("start n=node({id}) return n;", map("id",0)); 
    } 
} 

編輯: 我使用的Java 7

回答

1

我有沒有Neo4j的經驗,但QueryResults通常需要關閉,爲了讓Java的釋放/清理連接和類似的事情。順便提一下,我不知道你使用的是哪個版本的java,但是如果它是java 7或更高版本,並且此結果實現java.lang.AutoClosable(它可能會這樣做),那麼您可以使用自動化資源管理!好極了!

因此,無論手動調用:result.close(優選在最後塊)或使用ARM:

try (QueryResult> result = engine.query("start n=node({id}) return n;", map("id",0))) { 
    // Do stuff here 
} 

應該可能做到這一點。

+0

所以這將工作,但這需要對象實現java.lang.autocloseable – Badmiral 2013-04-22 14:30:41

+0

確實,這是java.io.Closable的父項,所以所有這些工作以及。 – 2013-04-22 22:15:16