2013-04-22 5 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)); 
    } 
} 

EDIT: Я использую Java 7.

ответ

1

У меня нет опыта работы с Neo4j, но QueryResults обычно должны быть закрыты, для того, чтобы Явы, чтобы освободить/очистить соединение и подобные вещи.

Кстати, я не знаю, какую версию 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

+0

Действительно, это родительский элемент java.io.Closable, поэтому все это работает. –