Neo4j удалить свойство узла с помощью neo4j-jdbc

У меня есть край с несколькими свойствами. Я хотел бы сохранить край, но удалить только свойство name.

Мой Java Cypher это:

public static final String DELETE_EDGE_PROPERTY_QUERY = //
        "MATCH ()-[r]->() where id(r) = {1} REMOVE r.{2} RETURN r"; //

Он работает на Cypher-консоли, но не работает на JDBC.

Я получил эту ошибку:

обработка не удалась; вложенным исключением является org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; неклассифицированное исключение SQLE для SQL [MATCH ()-[r]->() где id(r) = {1} REMOVE r.{2} RETURN r]; Состояние SQL [null]; код ошибки [0]; Произошли некоторые ошибки: [Neo.ClientError.Statement.SyntaxError]: Неверный ввод '{': ожидается идентификатор, пробел, имя функции или имя ключа свойства (строка 1, столбец 45 (смещение: 44)) "MATCH ()-[r]->() где id(r) = {1} REMOVE r.{2} RETURN r" `

Какие-либо предложения?

Спасибо

РЕДАКТИРОВАТЬ

Я не мог сделать с шаблоном JDBC. поэтому я использовал String replace: установка свойства в NULL удалит свойство ( http://www.baeldung.com/java-neo4j)

Решение: Java:

String deleteQuery = String.format(DELETE_EDGE_PROPERTY_QUERY, property);
plantJdbcTemplate.update(deleteQuery, edgeId);

шифр:

public static final String DELETE_EDGE_PROPERTY_QUERY = //
        "MATCH ()-[r]->() where id(r) = {1} SET r.%s = NULL RETURN r";

1 ответ

Решение

Это не neo4j-jdbc Проблема связана с дизайном Neo4j по параметризованному запросу.

По запросу вы можете параметризовать все данные, которые вы хотите, кроме:

  • этикетки
  • типы отношений
  • свойства

Если вы хотите сделать это в Cypher, в плагине APOC есть много помощников.

Другие вопросы по тегам