У меня есть ребро с несколькими свойствами.Я хотел бы сохранить край, но удалить только свойство name.
Мой java Cypher такой:
public static final String DELETE_EDGE_PROPERTY_QUERY = //
"MATCH ()-[r]->() where id(r) = {1} REMOVE r.{2} RETURN r"; //
Он работает на консоли шифра, но не работает на 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);
cypher:
public static final String DELETE_EDGE_PROPERTY_QUERY = //
"MATCH ()-[r]->() where id(r) = {1} SET r.%s = NULL RETURN r";