我有一个返回流的自定义 JPA 存储库。 自定义 jpa 调用有一些左连接,代码为 root.fetch("variable", JoinType.Left)。 在流上调用 foreach 循环时,我收到 JDBC 错误“由于调用 isBeforeFirst 或 isAfterLast 异常,无法确定结果集是否为空”以及“此方法只能在可滚动类型 TYPE_SCROLL_SENSITIVE 或 TYPE_SCROLL_INSENSITIVE 的结果集对象上调用”。 我尝试将 @Transactional 注释添加到不起作用的方法中。 如果将代码更新为 root.join("variable", JoinType.Left) ,则代码将按预期工作。 但是,出于性能原因,我希望保留 root.fetch 而不是 root.join。 关于如何解决这个问题有什么建议吗?
我无法找到使用 getResultStream 方法的方法,但我可以使用 ScrollableResults 类来做到这一点。 我点击了这个链接。 https://www.baeldung.com/hibernate-pagination。 我还在 while 循环中添加了一个分离方法。 我希望这对某人有帮助。