Konfiguruję ItemRepositoryReader dla czytnika w kroku SpringBatch.RepositoryItemReader nie znajduje metod z argumentami
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;
}
To jest linia w moim repozytorium.
public interface EcheanceRepository extends JpaRepository<EcheanceEntity, Long>{
public EcheanceEntity findById(long id);
@Override
public List<EcheanceEntity> findAll();
Jeśli używasz metody findAll(), więc bez żadnych argumentów, działa dobrze. Ale jeśli użyję metody findById (long id), otrzymam "brak takiego wyjątku metody, findById (java.lang.Long, org.springframework.data.domain.PageRequest)" z ItemRepositoryReader. Metoda działa dobrze bez korzystania z czytnika, gdy testuję go, używając natychmiast repozytorium.
Dziękuję.
Ponieważ tej metody nie ma. Co to jest użycie identyfikatora id z argumentem, który można wyświetlić? również 'findById' lub faktycznie' findOne' jest już dostarczony, a także 'findAll', więc proponuję usunąć je z własnego repozytorium. Nic nie dodają. –
Dziękuję za odpowiedź. Nawet jeśli używam findOne (long id), działa dobrze, używając natychmiast z repozytorium, ale nie przez czytnik. – Azhenot
Ponieważ nie ma sensu używać 'findOne' w tym czytniku ani nie ma sensu mieć' findOne' lub 'findById', który pobiera argument" Pageable ". Wyszukujesz jeden element o identyfikatorze, w jaki sposób zamierzasz go posortować? –