回退删除CYPHER,当节点有多条边时,删除抛异常是期望结果,不能使用detach直接删除节点

master
yaxin 4 months ago
parent 35c90d44b8
commit 4dbc1e1142

@ -92,13 +92,14 @@ public class Neo4jServiceImpl implements Neo4jService {
try { try {
Session session = driver.session(); Session session = driver.session();
StringBuilder cql = new StringBuilder(); StringBuilder cql = new StringBuilder();
cql.append("MATCH (n) where id(n) = ").append(id).append(" DETACH DELETE n"); cql.append("MATCH (n) where id(n) = ").append(id).append(" DELETE n");
log.info(cql.toString()); log.info(cql.toString());
Result run = session.run(cql.toString()); Result run = session.run(cql.toString());
while (run.hasNext()) { while (run.hasNext()) {
run.next(); run.next();
} }
} catch (Exception e) { } catch (Exception e) {
//如果报错,说明存在未删除的关系,是合理的
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
} }
} }
@ -108,13 +109,14 @@ public class Neo4jServiceImpl implements Neo4jService {
try { try {
Session session = driver.session(); Session session = driver.session();
StringBuilder cql = new StringBuilder(); StringBuilder cql = new StringBuilder();
cql.append("MATCH (n) WHERE id(n) = ").append(id).append(" DETACH DELETE n"); cql.append("MATCH (n) WHERE n.id = ").append(id).append(" AND NOT (n)--() DELETE n");
log.info(cql.toString()); log.info(cql.toString());
Result run = session.run(cql.toString()); Result run = session.run(cql.toString());
while (run.hasNext()) { while (run.hasNext()) {
run.next(); run.next();
} }
} catch (Exception e) { } catch (Exception e) {
//如果报错,说明存在未删除的关系,是合理的
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
} }
} }

Loading…
Cancel
Save