Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring Postgresql中的Java 8 JPA存储库逐行流_Spring_Postgresql_Java 8_Spring Data_Spring Data Jpa - Fatal编程技术网

Spring Postgresql中的Java 8 JPA存储库逐行流

Spring Postgresql中的Java 8 JPA存储库逐行流,spring,postgresql,java-8,spring-data,spring-data-jpa,Spring,Postgresql,Java 8,Spring Data,Spring Data Jpa,关于MySQL的阅读定义了某些查询提示@QueryHints注释,这些提示是MySQL逐行处理结果集所必需的。有人确切知道PostgreSQL需要什么吗 以下是MySQL存储库中的参考查询定义: @QueryHints(value = @QueryHint(name = HINT_FETCH_SIZE, value = "" + Integer.MIN_VALUE)) @Query(value = "select t from Todo t") Stream<Todo> stream

关于MySQL的阅读定义了某些查询提示@QueryHints注释,这些提示是MySQL逐行处理结果集所必需的。有人确切知道PostgreSQL需要什么吗

以下是MySQL存储库中的参考查询定义:

@QueryHints(value = @QueryHint(name = HINT_FETCH_SIZE, value = "" + Integer.MIN_VALUE))
@Query(value = "select t from Todo t")
Stream<Todo> streamAll();

它的PostgreSQL等价物是:

@QueryHints(value = @QueryHint(name = HINT_FETCH_SIZE, value = "1")
相反,当不满足条件行>=0时,应引发SQLException。MySQL的JDBC驱动程序不支持这一点


尽管在PostgreSQL中,您实际上可以设置大于1的值,以允许PostgreSQL的JDBC驱动程序进行一些缓存。50的数字似乎是合理的,除非你有不合理的宽行。您还可以选择此值作为预期行计数的一部分。在部署应用程序之前测试一些变体。

PostgreSQL需要类似的设置,即ResultSet.TYPE\u FORWARD\u ONLY&特定的获取大小。但是,您可以根据自己的喜好控制提取大小。还有另一个限制:在这种可滚动模式下只能运行一个查询。上面的代码使用Integer.MIN_值,不知道postgresql会用它做什么,因此我的问题是。另外,你能再解释一下限制吗?所有连接都是这样吗?我假设其他查询可以并行运行?不,PostgreSQL的JDBC驱动程序允许在一条语句中执行多个查询。f、 前。插入。。。;选择…;:这在可滚动模式下是不允许的,而且通常不可移植。-在PostgreSQL中,获取大小不要使用负值。使用@QueryHintname=HINT\u FETCH\u SIZE,值=1表示逐行读取,>1表示逐批读取并带有一些缓存,0表示关闭可滚动性。相反,如果MySQL的JDBC驱动程序不满足条件rows>=0,则应抛出SQLException。这取决于您期望的行数和行宽。因此,我建议您测试多个变体。但是我预测fetch size=1不会是最快的,如果达到rowcount f.ex的数量,超过某个值,它会变得越来越慢。那么它实际上不会滚动任何内容