Tôi đang thiết lập một ItemRepositoryReader cho trình đọc trong bước springBatch.RepositoryItemReader không tìm phương thức với đối số
public ItemReader<EcheanceEntity> reader(){
RepositoryItemReader<EcheanceEntity> reader = new RepositoryItemReader<EcheanceEntity>();
reader.setRepository(echeanceRepository);
reader.setMethodName("findById");
List parameters = new ArrayList();
long a = 0;
parameters.add(a);
reader.setArguments(parameters);
Map<String, Direction> sort = new HashMap<String, Direction>();
sort.put("id", Direction.ASC);
reader.setSort(sort);
return reader;
}
đây là dòng trong kho của tôi.
public interface EcheanceRepository extends JpaRepository<EcheanceEntity, Long>{
public EcheanceEntity findById(long id);
@Override
public List<EcheanceEntity> findAll();
Nếu sử dụng phương thức findAll(), do đó không có bất kỳ đối số nào, nó hoạt động tốt. Nhưng nếu tôi sử dụng phương thức findById (id dài), tôi nhận được "không có ngoại lệ phương thức như vậy, findById (java.lang.Long, org.springframework.data.domain.PageRequest)" từ ItemRepositoryReader. Phương pháp này hoạt động tốt mà không cần sử dụng trình đọc khi tôi đang thử nghiệm nó bằng cách sử dụng ngay kho lưu trữ.
Cảm ơn bạn.
Vì phương pháp đó không có ở đó. Ngoài ra những gì sử dụng là một tìm kiếm theo id với một đối số pageable? cũng 'findById' hoặc thực sự' findOne' đã được cung cấp cũng như 'findAll' vì vậy tôi đề nghị bạn loại bỏ chúng khỏi kho lưu trữ của riêng bạn. Họ không thêm bất cứ điều gì. –
Cảm ơn bạn đã phản hồi. Ngay cả khi tôi sử dụng findOne (id dài), nó hoạt động tốt bằng cách sử dụng ngay lập tức từ kho lưu trữ, nhưng không phải thông qua trình đọc. – Azhenot
Bởi vì nó không có ý nghĩa để sử dụng 'findOne' trong người đọc đó cũng không có ý nghĩa để có một' findOne' hoặc 'findById' mà lấy một đối số' Pageable'. Bạn đang lấy một phần tử với một id, làm thế nào bạn sẽ sắp xếp/trang trên đó? –