Micronaut 和 Neo4j 的 ResultConsumedException:无法再访问此结果的记录,因为结果已被使用
ResultConsumedException with Micronaut and Neo4j: Cannot access records on this result any more as the result has already been consumed
我正在尝试让一个简单的应用程序与 Micronaut 1.3.5 和 Neo4J 4.0.0 一起工作。我正在使用 io.micronaut.configuration:micronaut-neo4j-bolt:2.0.0
驱动程序。我有这样的代码:
public Stream<Map<String, Object>> findAll() {
try (Session s = driver.session()) {
String stmt = "MATCH (n:Product) RETURN n";
return s.readTransaction(tx -> tx.run(stmt)).list(r -> r.asMap()).stream();
}
}
我遇到了以下异常:
result has already been consumed or the query runner where the result is created has already been closed.
org.neo4j.driver.exceptions.ResultConsumedException: Cannot access records on this result any more as the result has already been consumed or the query runner where the result is created has already been closed.
我进行了一些谷歌搜索,发现了一些表明这是正常行为的事情,但没有讨论实际的解决方案。我假设它与 driver/session.
的异步性质有关
可行的方法是,
Stream<Map<String, Object>> stream = s.readTransaction(tx -> {
Result result = tx.run(stmt);
return result.list(r -> r.asMap()).stream();
});
结果需要在readTransaction
内处理
https://github.com/neo4j/neo4j-java-driver/tree/4.1/examples/src/main/java/org/neo4j/docs/driver 中有大量示例,您可能会发现它们很有用
我正在尝试让一个简单的应用程序与 Micronaut 1.3.5 和 Neo4J 4.0.0 一起工作。我正在使用 io.micronaut.configuration:micronaut-neo4j-bolt:2.0.0
驱动程序。我有这样的代码:
public Stream<Map<String, Object>> findAll() {
try (Session s = driver.session()) {
String stmt = "MATCH (n:Product) RETURN n";
return s.readTransaction(tx -> tx.run(stmt)).list(r -> r.asMap()).stream();
}
}
我遇到了以下异常:
result has already been consumed or the query runner where the result is created has already been closed.
org.neo4j.driver.exceptions.ResultConsumedException: Cannot access records on this result any more as the result has already been consumed or the query runner where the result is created has already been closed.
我进行了一些谷歌搜索,发现了一些表明这是正常行为的事情,但没有讨论实际的解决方案。我假设它与 driver/session.
的异步性质有关可行的方法是,
Stream<Map<String, Object>> stream = s.readTransaction(tx -> {
Result result = tx.run(stmt);
return result.list(r -> r.asMap()).stream();
});
结果需要在readTransaction
https://github.com/neo4j/neo4j-java-driver/tree/4.1/examples/src/main/java/org/neo4j/docs/driver 中有大量示例,您可能会发现它们很有用