首页 > 解决方案 > Spring Boot Stram API 大数据

问题描述

我将 JPA 与返回大约 13k 寄存器的本机查询一起使用。我想使用 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,最近我得到的是一个没有结果的自定义对象

标签: javaspringspring-data-jpaspring-data

解决方案


将所有 13k 条记录加载到组合框中听起来是一个非常缓慢的解决方案。我建议实施基于like查询的搜索。像这样的东西:

@Query("SELECT * FROM mytable WHERE name like ':name%'")
Stream<MyTable> getTableStream(@Param("name") String name);

但是如果你真的想加载所有的记录,你可以使用java.util.Collectionorjava.util.List来代替流。

Collection<MyTable> getTableStream();

推荐阅读