我在springBatch步驟中爲閱讀器設置了ItemRepositoryReader。RepositoryItemReader找不到帶參數的方法
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;
}
這是我的存儲庫中的行。
public interface EcheanceRepository extends JpaRepository<EcheanceEntity, Long>{
public EcheanceEntity findById(long id);
@Override
public List<EcheanceEntity> findAll();
如果使用方法findAll(),所以沒有任何參數,它工作正常。但是如果我使用方法findById(long id),我從ItemRepositoryReader中得到「no such method exception,findById(java.lang.Long,org.springframework.data.domain.PageRequest)」。當我通過立即使用存儲庫進行測試時,該方法沒有使用讀取器就能正常工作。
謝謝。
因爲該方法不存在。還有什麼使用是一個可尋址的參數與ID查找?也已經提供了'findById'或者實際上'findOne'以及'findAll',所以我建議你從你自己的倉庫中移除它們。他們不添加任何東西。 –
感謝您的回覆。即使我使用findOne(long id),它通過立即從存儲庫中使用,但不通過閱讀器可以正常工作。 – Azhenot
因爲在讀者中使用'findOne'沒有意義,所以'findOne'或'findById'需要'Pageable'參數是有意義的。你正在檢索一個ID爲id的元素,你將如何排序/頁面? –