为什么我无法从Neo4J Bolt Driver流式传输交易结果

fkaflof6  于 9个月前  发布在  其他
关注(0)|答案(1)|浏览(92)

我不明白为什么我不能像这样流的结果:

try (var session = driver.session()) {
  var maybeRecord = session.executeRead(tx -> tx.run("MATCH (c:Category { id:$id }) RETURN c", parameters("bggId", id))) //
                    .stream() //
                    .findFirst();
}

字符串
当我这样做时,我得到一个错误:

org.neo4j.driver.exceptions.ClientException: org.neo4j.driver.Result is not a valid return value, it should be consumed before producing a return value


我明白这个错误的意思,我可以修改代码来处理整个while (results.hasNext()) { }业务,但它非常冗长。有没有一种方法可以类似于流处理,同时保持在使用Result的范围内?

0yycz8jy

0yycz8jy1#

所以,括号是我的敌人。

var maybeRecord = session.executeRead(tx -> tx.run("MATCH (c:Category { id:$id }) RETURN c", parameters("bggId", id)))
                    .stream()
                    .findFirst();

字符串
应该是:

var maybeRecord = session.executeRead(tx -> tx.run("MATCH (c:Category { id:$id }) RETURN c", parameters("bggId", id))
                    .stream()
                    .findFirst());


感谢@shmosel回答这个问题的评论。

相关问题