我在春季批处理步骤中为阅读器设置了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)