我正在使用RepositoryItemReader作为阅读器。我需要一起处理该块的整个读取器值列表。
当我试图通过扩展读取器返回列表来执行块处理时,在我的处理器中,我收到错误
类Car不能转换为java.util.list(Car位于加载程序“app”的未命名模块中);java.util.List位于加载程序“bootstrap”的java.base模块中
读者
public class CarReader extends RepositoryItemReader<List<Car>>{
@Autowired
CarRepository carRepository;
public CarReader(){
super();
this.setPageSize(100);
this.setSort(CarSort());
this.setRepository(carRepository);
this.setMethodName("findAll");
return repositoryItemReader;
}
贮藏室ˌ仓库
public interface CarRepository extends PagingAndSortingRepository<Car,long>{
Page<Car> findAll(Pageable pageable);
}
处理器
public class CarProcessor implements ItemProcessor<List<Car>,List<Car>>{
@Override
public List<Car> process(List<Car> cars){
//prepare CarTransform
}
}
步骤
@Bean
public Step step1() {
return this.stepBuilderFactory.get("step1")
.<List<Car>, List<CarTransform>>chunk(100)
.reader(carReader)
.processor(carProcessor)
.writer(carWriter)
.build();
}
看这个例子:https://html" target="_blank">github.com/emalock3/spring-batch-example/blob/master/src/main/java/com/github/emalock3/spring/example/BatchConfiguration.java
我不认为你应该在你的阅读器/处理器/编写器中使用列表......相反,只使用 Car 和 CarTransform 类。
Spring Batch将根据您设置的块大小处理所有分块。根据您的配置,它应该一次自动处理 100 条记录。
我认为您看到的错误是因为<code>findAll<code>方法返回了<code>页
您的步骤配置应如下所示:
@Bean
public Step step1() {
return this.stepBuilderFactory.get("step1")
.<Car, CarTransform>chunk(100)
.reader(carReader)
.processor(carProcessor)
.writer(carWriter)
.build();
}
读者:
public class CarReader extends RepositoryItemReader<Car> {
@Autowired
CarRepository carRepository;
public CarReader() {
super();
this.setPageSize(100);
this.setSort(CarSort());
this.setRepository(carRepository);
this.setMethodName("findAll");
}
}
处理器:
public class CarProcessor implements ItemProcessor<Car, CarTransform> {
@Override
public CarTransform process(Car car) {
// prepare CarTransform
}
}
我在后端代码中使用了Spring数据jpa。我已经包含了实体,dto接口,服务和jpa存储库代码。 现在的问题是,当我在< code>TopicService中调用< code>getAllTopics()时。它返回< code>Topic对象的列表,而不是< code>TopicDto。< code>Topic对象包含一个< code >示例列表,我没有将它包含在< code>TopicDto中
问题是:如何使spring批处理中的条目读取器传递列表而不是单个对象。 我已经搜索过了,一些答案是修改项目阅读器以返回对象列表,并改变项目处理器以接受列表作为输入。 如何对项目阅读器进行编码?
问题内容: 我正在为我的Web应用程序使用Hibernate和Spring。 在数据库操作中,Hibernate正在缓存实体并在下一个请求中返回它们,而不读取实际的数据库。我知道这将减少数据库的负载并提高性能。 但是,尽管此应用仍在构建中,但我需要在每个请求中从数据库加载数据(测试原因)。 有什么办法可以强制数据库读取? 我确定从此log4j消息进行缓存。 问题答案: 或(如果您使用JPA)将为您
我正在使用JpaPagingItemReaderBuilder查询一个DB,结果被插入到另一个DB中。 查询返回的结果没有任何问题,但我得到了一个错误与读取器的返回,在处理器中,您可以检查我的编码和错误下面。 有谁能给我一点启示吗?为什么我不能处理结果?
我创建了一个基本的Spring MVC / JPA / Hibernate应用程序。我试图保存一个UserProfile实体来测试我是否真的可以持久化它,但是什么也没有保存,也没有抛出异常。 在控制器方法中,我创建了一个简单的UserProfile(这是一个@Entity),并将其发送到服务方法。类使用 @Service 对类进行批注,并使用 @Transactional 对 addUserPro
我正在编写一个spring批处理作业,在其中一个步骤中,我为处理器编写了以下代码: null 欢迎任何暗示。