使用以下设置访问neo4j数据库时出现空结果错误。
阅读器:
Driver driver = GraphDatabase.driver("bolt://db_address:7687", AuthTokens.basic("user", "password"));
while (true) {
try (Session session = driver.session(AccessMode.READ)) {
for (int i = 1; i <= 100; i++) {
session.run("Match (n:Number) where n.value=$value return ID(n)", parameters("value", i)).single().get(0).asInt();
}
}
Thread.sleep(500);
}
上载器:
Driver driver = GraphDatabase.driver("bolt://db_address:7687", AuthTokens.basic("user", "password"));
while (true) {
try (Session session = driver.session(AccessMode.WRITE)) {
try (Transaction tx = session.beginTransaction()) {
tx.run("MATCH (n) DELETE n");
for (int i = 1; i <= 100; i++) {
tx.run("CREATE (n:Number {value: $value}) return ID(n)", parameters("value", i)).single().get(0).asInt();
}
tx.success();
}
}
Thread.sleep(500);
}
几个周期后,我在读取器过程中遇到错误: 无法检索单个记录,因为此结果为空。
开始时,数据库包含请求的数据。 根据“写交易”的描述,空结果上方的代码似乎很奇怪。
使用neo4j进行事务处理时,我是否错过了某些事情?
答案 0 :(得分:1)
您需要致电tx.success()
提交交易。
PS:不确定为什么每次上载运行都会清除数据库