#neo4j
Вопрос:
Я пытаюсь реализовать метод hasProperty() в отношениях со следующим кодом
public boolean hasProperty(String key) {
String query = "match ()-[r]->() where id(r)=$id return exists(r." key ")";
Value value = Values.parameters("id", id);
logger.debug("hasProperty() " query " " value.toString());
Result ret = tx.run(query, value);
return ret.single().get(0).isTrue();
}
Эффективный шифр есть match ()-[r]->() where id(r)=185 return exists(r.name)
, но я получил ошибку, которая
Neo.DatabaseError.General.UnknownError
«логические операции org.neo4j.cypher.CursorUtils.relationshipHasProperty(org.neo4j.internal.kernel.api.Read, org.neo4j.internal.kernel.api.RelationshipScanCursor, длинный, org.neo4j.internal.kernel.api.PropertyCursor, int)
Когда я использую exists() на подобном узле match (n)-[r]->() where id(r)=185 return exists(n.name)
, это работает. Я подозреваю, что функция exists() не может быть использована для связи, но, согласно руководству по шифрованию, функция exists() возвращает, если указанное свойство существует в узле и связи. Итак, что здесь не так и как я могу проверить, имеет ли отношение указанное свойство?
Комментарии:
1. Я попробовал
match ()-[r]->() where id(r)=185 return exists(r.name)
встроенную базу данных, она работает. Так что, возможно, шифр прав, но у тестовой базы данных есть проблема. Обе базы данных имеют версию 4.2.3