我将 JPA 与返回大约 13k 寄存器的 native 查询一起使用。我想使用 Java 8 中的 Stream API,但结果没有出现。
我无法分页,因为结果会填充一个组合框
我的存储库发送流 我添加了 @Transactional(readOnly = true) 以使其工作
@Query(value = "select * from mytable", native = true)
Stream<MyTable> getTableStream()
@Transactional(readOnly = true)
public Stream<MyTable> getTableStream() {
return repository.getTableStream()
}
@GetMapping(value = "/table", produces = MediaType.APPLICATION_STREAM_JSON_VALUE)
@Transactional(readOnly = true)
public ResponseEntity<Stream<MyTable>> getMailingClient() {
Stream<MyTable> body = service.getTableStream();
return ResponseEntity.ok(body);
}
我找到的关于流的所有链接和资源都没有显示使用 Spring rest API 实现返回 JSON。
我的前端是 Angular 6,我得到的最近的是一个没有结果的自定义对象
最佳答案
将所有 13k 记录加载到组合框中听起来是一个非常慢的解决方案。我建议实现基于 like
查询的搜索。像这样:
@Query("SELECT * FROM mytable WHERE name like ':name%'")
Stream<MyTable> getTableStream(@Param("name") String name);
但如果您真的想加载所有记录,您可以使用 java.util.Collection
或 java.util.List
而不是流。
Collection<MyTable> getTableStream();
关于java - Spring boot Stream API 大数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58012935/