我有一个带有sevral属性的优势。我想保留边缘,但只删除名称属性。
我的java密码是这样的:
public static final String DELETE_EDGE_PROPERTY_QUERY = //
"MATCH ()-[r]->() where id(r) = {1} REMOVE r.{2} RETURN r"; //
它适用于密码控制台,但不适用于 jdbc。
我收到此错误:
处理失败; 嵌套异常是 org.springframework.jdbc.UnclassificationdSQLException: PreparedStatementCallback; unclassificationd SQLException for SQL [MATCH ((-[r]->(( 其中 id(r( = {1} REMOVE r.{2} RETURN r];SQL 状态 [空];错误代码 [0];发生一些错误: [Neo.ClientError.Statement.SyntaxError]:输入无效 '{':需要标识符、空格、函数名称或属性键名称(第 1 行,第 45 列(偏移量:44(( "MATCH ((-[r]->(( 其中 id(r( = {1} REMOVE r.{2} RETURN r" `
有什么建议吗?
谢谢
编辑
我不能用jdbc模板。 所以我使用了字符串替换: 将属性设置为 NULL 将删除该属性 (http://www.baeldung.com/java-neo4j(
溶液: 爪哇岛:
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";
这不是一个neo4j-jdbc
问题,它与 Neo4j 关于参数化查询的设计有关。
在查询中,您可以参数化所需的所有数据,但以下数据除外:
- 标签
- 关系类型
- 性能
如果你想在Cypher中做到这一点,APOC插件中有很多帮助程序。