小编DIM*_*APE的帖子

RepositoryItemReader:无法将java.util.ArrayList强制转换为org.springframework.data.domain.Page

我在春季批处理步骤中为阅读器设置了ItemRepositoryReader。我想使用findByScenarioBetween方法,该方法带有两个参数min和max。

我的回购

public interface FuneralPricingRepository extends JpaRepository<FuneralPricing, Long> {

    @Query("select p from FuneralPricing p where p.scenario between ?1 and ?2")
    List<FuneralPricing> findByScenarioBetween(Long min, Long max, Pageable pageable);


}
Run Code Online (Sandbox Code Playgroud)

我的读者

  @Bean
  @StepScope
  public ItemReader<FuneralPricing> funeralPricingRepositoryReader(
          @Value("#{jobParameters[start]}") Long start,
          @Value("#{jobParameters[end]}") Long end) {
    RepositoryItemReader<FuneralPricing> repositoryItemReader = new RepositoryItemReader<>();
    repositoryItemReader.setPageSize(10);
    repositoryItemReader.setSort(funeralPricingSort());
    repositoryItemReader.setRepository(funeralPricingRepository);
    repositoryItemReader.setMaxItemCount(100);
    repositoryItemReader.setMethodName("findByScenarioBetween");
    List parameters = new ArrayList();
    parameters.add(start);
    parameters.add(end);
    repositoryItemReader.setArguments(parameters);
    return repositoryItemReader;
  }
Run Code Online (Sandbox Code Playgroud)

当我使用findAll时,它工作正常。但是,我不想每次都阅读所有行。我不知道我的阅读器是否缺少任何内容!,谢谢。

java.lang.ClassCastException: java.util.ArrayList cannot be cast to org.springframework.data.domain.Page at org.springframework.batch.item.data.RepositoryItemReader.doPageRead(RepositoryItemReader.java:208) at org.springframework.batch.item.data.RepositoryItemReader.doRead(RepositoryItemReader.java:153) at org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader.read(AbstractItemCountingItemStreamItemReader.java:88) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at …
Run Code Online (Sandbox Code Playgroud)

java spring spring-batch spring-batch-admin

2
推荐指数
1
解决办法
4764
查看次数

标签 统计

java ×1

spring ×1

spring-batch ×1

spring-batch-admin ×1