2013-07-07 2 views
1

Я сейчас пытаюсь использовать Neo4j 2.0.0 M3 и видеть странное поведение. В моих модульных тестах все работает как ожидалось (с использованием newImpermanentDatabase), но в реальности я не получаю результаты от graphDatabaseService.findNodesByLabelAndProperty.neo4j 2.0 findNodesByLabelAndProperty не работает

Вот код в вопросе:

ResourceIterator<Node> iterator = graphDB 
      .findNodesByLabelAndProperty(Labels.User, "EMAIL_ADDRESS", emailAddress) 
      .iterator(); 
try { 
    if (iterator.hasNext()) { // => returns false** 
     return iterator.next(); 
    } 
} finally { 
    iterator.close(); 
} 
return null; 

Это не возвращает никаких результатов. Тем не менее, при запуске следующего кода я вижу, что мой узел там (напечатан MATCH !!!!!!!!!), и у меня также есть установка индекса через схему (хотя, если я читаю API, это кажется нет необходимости, но имеет важное значение для производительности):

ResourceIterator<Node> iterator1 = GlobalGraphOperations.at(graphDB).getAllNodesWithLabel(Labels.User).iterator(); 
    while (iterator1.hasNext()) { 
     Node result = iterator1.next(); 
     UserDao.printoutNode(emailAddress, result); 
    } 

и UserDao.printoutNode

public static void printoutNode(String emailAddress, Node next) { 
    System.out.print(next); 
    ResourceIterator<Label> iterator1 = next.getLabels().iterator(); 
    System.out.print("("); 
    while (iterator1.hasNext()) { 
     System.out.print(iterator1.next().name()); 
    } 

    System.out.print("): "); 
    for(String key : next.getPropertyKeys()) { 
     System.out.print(key + ": " + next.getProperty(key).toString() + "; "); 
     if(emailAddress.equals(next.getProperty(key).toString())) { 
      System.out.print("MATCH!!!!!!!!!"); 
     } 
    } 

    System.out.println(); 
} 

Я уже отлажена через код и то, что я уже узнал, что я прохожу через InternalAbstractGraphDatabase.map2Nodes к DelegatingIndexProxy.getDelegate и заканчивается в IndexReader.Empty классом, который возвращает IteratorUtil.EMPTY_ITERATOR, получая таким образом false за iterator.hasNext()

Любая идея, что я делаю неправильно?

+1

Нашел: я включил только neo4j-kernel: 2.0.0-M03 в путь к классам. В тот момент, когда я добавил neo4j-cypher: 2.0.0-M03, все работало хорошо. – rdehuyss

+0

Здравствуйте и добро пожаловать в SO. Если вы нашли свое собственное решение, вам рекомендуется написать его как ответ и пометить его как выбранный. –

ответ

1

Нашел:

I включены только neo4j-kernel:2.0.0-M03 в пути к классам. В тот момент, когда я добавил neo4j-cypher:2.0.0-M03, все было хорошо.

Надеюсь, что этот ответ поможет сэкономить время другим пользователям.

@ Neo4j: было бы неплохо, если бы исключение было выбрано вместо того, чтобы просто ничего не возвращать.

@Ricardo: Я хотел, но я еще не был допущен, так как моя репутация не была достаточно хорошей, как новый пользователь SO.

Смежные вопросы