我有一个优势的边缘 . 我想保持优势,但只删除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;未分类SQL的SQLException [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替换:将属性设置为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";