Spring Data JPA:在Oracle DB上使用带有IN-Clause的页面

时间:2018-12-12 12:10:53

标签: spring oracle spring-data-jpa

我想用我的Spring Boot应用程序+ thymeleaf构建一个分页。为了对此进行归档,我的存储库实现了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());
}

您知道如何解决此问题吗?

0 个答案:

没有答案