Neo4j 用 neo4j-jdbc 删除节点 属性
Neo4j delete a node property with neo4j-jdbc
我有一条具有多种特性的优势。我想保留边缘但只删除名称 属性.
我的 java Cypher 是这样的:
public static final String DELETE_EDGE_PROPERTY_QUERY = //
"MATCH ()-[r]->() where id(r) = {1} REMOVE r.{2} RETURN r"; //
它适用于密码控制台,但不适用于 jdbc。
我收到这个错误:
processing failed; nested exception is org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [MATCH ()-[r]->() where id(r) = {1} REMOVE r.{2} RETURN r]; SQL state [null]; error code [0]; Some errors occurred :
[Neo.ClientError.Statement.SyntaxError]:Invalid input '{': expected an identifier, whitespace, a function name or a property key name (line 1, column 45 (offset: 44))
"MATCH ()-[r]->() where id(r) = {1} REMOVE r.{2} RETURN r"
`
有什么建议吗?
谢谢
编辑
我无法使用 jdbc 模板。
所以我使用了字符串替换:
将 属性 设置为 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";
这不是neo4j-jdbc
问题,它与 Neo4j 关于参数化查询的设计有关。
在查询中,您可以参数化所需的所有数据,除了:
- 标签
- 关系类型
- 属性
如果你想在Cypher中实现,APOC插件中有很多帮手。
我有一条具有多种特性的优势。我想保留边缘但只删除名称 属性.
我的 java Cypher 是这样的:
public static final String DELETE_EDGE_PROPERTY_QUERY = //
"MATCH ()-[r]->() where id(r) = {1} REMOVE r.{2} RETURN r"; //
它适用于密码控制台,但不适用于 jdbc。
我收到这个错误:
processing failed; nested exception is org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [MATCH ()-[r]->() where id(r) = {1} REMOVE r.{2} RETURN r]; SQL state [null]; error code [0]; Some errors occurred : [Neo.ClientError.Statement.SyntaxError]:Invalid input '{': expected an identifier, whitespace, a function name or a property key name (line 1, column 45 (offset: 44)) "MATCH ()-[r]->() where id(r) = {1} REMOVE r.{2} RETURN r" `
有什么建议吗?
谢谢
编辑
我无法使用 jdbc 模板。 所以我使用了字符串替换: 将 属性 设置为 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";
这不是neo4j-jdbc
问题,它与 Neo4j 关于参数化查询的设计有关。
在查询中,您可以参数化所需的所有数据,除了:
- 标签
- 关系类型
- 属性
如果你想在Cypher中实现,APOC插件中有很多帮手。