【发布时间】:2021-07-12 23:29:35
【问题描述】:
我不明白 Stream<> 返回类型与存储库方法的 List<> 有何不同。
我在下面用 fetch size = 1 写了一个简单的方法,但我最终从表中获取了所有 4 条记录,这类似于 List。我错过了什么吗?它是否应该只获取HINT_FETCH_SIZE 中指定的 1 条记录。如果它获取 1 条记录,那么剩余的 3 条记录是如何获取的?完成了多少次数据库调用?
@QueryHints(value = {
@QueryHint(name = HINT_FETCH_SIZE, value = "1"),
@QueryHint(name = HINT_CACHEABLE, value = "false"),
@QueryHint(name = HINT_READONLY, value = "true"), })
@Query("SELECT s FROM Customer s")
public Stream<Customer> findAllStream8();
服务:
@Transactional(readOnly = true)
public List<Customer> findAllStream(){
try (Stream<Customer> streamCustomer = repository.findAllStream8()){
return streamCustomer.collect(Collectors.toList());
} catch (Exception e){
e.printStackTrace();
}
return Arrays.asList(new Customer("stream customer"));
}
控制器:
@GetMapping("/customer/allStream")
public List<Customer> findAllCustomersStream(){
return cs.findAllStream();
}
【问题讨论】:
标签: java spring spring-data-jpa java-stream