You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Neo4j Java Driver 4.4的IN子句查询时遇ResultConsumedException错误

解决Neo4j Java Driver的ResultConsumedException错误
  • 错误原因:你的代码中,session.readTransaction(tx -> tx.run(query)) 执行完毕后事务会自动关闭,此时返回的Result对象已无法访问。后续调用.list()时,结果已被消费或查询运行器已关闭,因此抛出异常。

  • 修正后的代码:将.list()的调用放在事务的lambda表达式内部,确保在事务活跃状态下获取记录列表:

ArrayList<String> changedMethods = ...

Query query = new Query(
                "MATCH (changedFunction: Function) WHERE changedFunction.signature IN $changedMethods \n" +
                "MATCH (affectedFunction: Function)-[:CALLS]->(changedFunction) \n" +
                "RETURN affectedFunction.functionName", parameters("changedMethods", changedMethods));

try (Session session = driver.session(SessionConfig.forDatabase("neo4j"))) {
     List<Record> a = session.readTransaction(tx -> tx.run(query).list());
     if (!a.isEmpty()) {
         System.out.println(a.get(0).toString());
     } else {
         System.out.println("未找到匹配的记录");
     }
}
  • IN查询用法确认:你当前通过$changedMethods传递集合参数的方式是正确的,Neo4j Java Driver 4.4会自动处理集合类型参数,无需额外转换。查询在Neo4j Workspace能正常运行,说明Cypher语句本身无问题,问题仅出在Java代码获取结果的时机上。

内容的提问来源于stack exchange,提问作者firemancer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 01:00:54