Neo4j-jdbc зависает при создании только 10 узлов

#java #neo4j

#java #neo4j

Вопрос:

Мой вариант использования — создавать узлы в удаленном neo4j. Код Java пытается создать 22 узла, но на 11-м узле он зависает при выполнении запроса.

Кстати, я использую поле desci, чтобы поместить описание ключ-значение узла, чтобы десериализовать его позже. T — это универсальный объект, который имеет функцию GetMap.

 public Long[] put(T[] a)  throws SQLException,BiopolisGeneralException
{
    Long[] ids=new Long[a.length];
    int index=0;
    for(T x : a)
    {          
        System.out.println(index "  count  " a.length);
        String json=(new Gson()).toJson(x);
        System.out.println(json);
        Map<String,Object> map=x.getMap();            
        String desci=Base64.encodeBase64String(json.getBytes());
        map.put("desci",desci);
        String queryString=" CREATE (n:" this.nodetype 
                " {1} )  RETURN ID(n)";
        Map<String,Object> mm=new HashMap<String,Object>();
        mm.put("1", map);
        ResultSet rs=this.bgr.conn.executeQuery(queryString, mm);
        if(!rs.next())
        {                
            throw new BiopolisGeneralException("Cannot create " json);
        }
        else
        {
            Long id=rs.getLong(1);
            System.out.println(id);
            ids[index  ]=id;
        }
        System.out.println("do");
    }
    System.out.println("ok");
    return ids;
}
  

Ответ №1:

Просто предположение, но есть ли где-то ограничение в 10, если не закрывать явно результирующие наборы? Попробуйте добавить rs.close() после вашего else предложения и посмотрите, имеет ли это значение.

Если это сработает, вы можете использовать его в блоке try-finally для надежности.

Комментарии:

1. Это сработало как шарм. Большое вам спасибо. Я завершу попытку с ресурсами.

2. Да, попытка с ресурсами была бы лучшей. Кстати, не стесняйтесь отмечать мой ответ как принятый 😉