5

我是 JPA 的新手,我想知道是否可以从结果集中流式传输数据,我的意思是我不想等待执行查询以开始处理第一个结果,例如在这种情况下一批。

是否有可能使用 JPA API 或任何社区采用的解决方法?最终使用 JPA 实现的功能?

4

4 回答 4

1

使用 @javax.persistence.PostLoad 注释对您来说可行吗?这样,您可以将操作与从数据存储创建给定对象的那一刻联系起来。我不确定这是否正是您正在寻找的。

于 2010-02-23T20:54:07.400 回答
1

出于显而易见的原因,“主”选择必须在对结果集进行任何操作之前完成。我不确定您要在这里实现什么...也许您需要使某些字段变得惰性,以便更快地获得第一个结果并在处理它们时获取详细信息?

于 2010-02-23T20:55:57.350 回答
1

您可以在 JPA 上使用真实的流:

public interface UserRepository extends JpaRepository<User, Integer> {
    // ...
    Stream<User> findAllByName(String name);
    // ...
}

您可以在这篇不错的文章中找到更多示例。

于 2019-03-01T10:06:55.170 回答
0

现在javax.persistence.TypedQuerygetResultStream()流数据的方法,但是默认实现只包装getResultList()到流中(因此,无论如何它会将所有数据加载到内存中)。但是 Hibernate 用真正的流媒体覆盖了这种行为。

于 2020-08-11T11:43:51.970 回答