Я сейчас пытаюсь использовать 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()
Любая идея, что я делаю неправильно?
Нашел: я включил только neo4j-kernel: 2.0.0-M03 в путь к классам. В тот момент, когда я добавил neo4j-cypher: 2.0.0-M03, все работало хорошо. – rdehuyss
Здравствуйте и добро пожаловать в SO. Если вы нашли свое собственное решение, вам рекомендуется написать его как ответ и пометить его как выбранный. –