neo4j - Micronaut 和 Neo4j 的 ResultConsumedException:无法再访问此结果的记录,因为结果已被使用
问题描述
我试图让一个简单的应用程序与 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.
我做了一些谷歌搜索,发现了一些表明这是正常行为的事情,但没有讨论实际解决方案。我假设它与驱动程序/会话的异步性质有关。
解决方案
可行的方法是,
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有很多示例,您可能会发现它们很有用
推荐阅读
- docker - docker中的模拟时间(-compose)
- r - 在 R Shiny App 中延迟后更改输出
- machine-learning - 在现实世界中没有恒定平衡时如何平衡您的数据集
- php - 无论如何,SQlite3 是否知道已添加的条目数量?
- java - Java FX 与 Firebase 存储的连接,用于上传图片
- parsing - 使用 Wordpress 提要获取解析错误
- julia - “错误:语法:不能并列字符串文字”用引号结束三引号字符串文字时
- c# - 如何为 GPIO 启用 LightningProviders?
- c# - 当按下按钮并显示在另一个页面上时,试图从两个输入中更改标签?| Xamarin | C#
- r - 将 JSON 对象拆分为多个数据帧的更快方法?