Spring Data JPA: использовать страницу с оператором IN в базе данных Oracle - PullRequest
0 голосов
/ 12 декабря 2018

Я хочу построить с моим весенним загрузочным приложением + тимелина, нумерацию страниц.Чтобы заархивировать это, мой репозиторий реализует JpaRepository.Теперь я не хочу использовать функцию Page<T> findAll(), но я хочу использовать свою собственную функцию.В этом запросе у меня есть предложение IN, подобное следующему:

SELECT car FROM CarEntity car WHERE car.producer IN (:producers)

В моем коде может быть возможно, что список за :producers может содержать более 1000 записей, и наша база данных Oracle выдает исключение, потому чтоограничения.
В настоящее время я не использую 'Page' в качестве типа возврата, вместо этого я получаю List<T> выбранных элементов, а затем разделяю его в зависимости от моей реальной страницы и возвращаю подсписок.Код выглядит так:

public List<Car> getCarsByCarProducers(List<CarProducer> pCarProducers) {
    return pCarProducers.stream()
        .collect(Collectors.groupingBy(it -> counter.getAndIncrement() / pChunkSize))
        .values()
        .stream()
        .map(partitionedList -> myCarRepository.getCarsByProducers(partitionedList))
        .flatMap(List::stream)
        .collect(Collectors.toList());
}

У вас есть идеи, как решить эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...