2013-04-22 32 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