Весенняя загрузка Stram API больших данных - PullRequest
2 голосов
/ 19 сентября 2019

Я использую JPA с собственным запросом, который возвращает около 13 тыс. Регистров.Я думал использовать Stream API из Java 8, но результат не приходит.

Не могу разбить на страницы, потому что результат заполнит поле со списком

Мой репозиторий отправляет поток, который я добавил@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);
}

Все ссылки и ресурсы, которые я нашел о потоке, не показывают реализацию возвращаемого JSON с Spring rest API.

Мой веб-интерфейс - Angular 6, и ближайший, который я получил, был одним пользовательским объектом без результата

1 Ответ

1 голос
/ 19 сентября 2019

Загрузка всех 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();
...