私は、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から「そのようなメソッドの例外はありません。findById(java.lang.Long、org.springframework.data.domain.PageRequest)」が取得されます。このメソッドは、リポジトリをすぐに使用してテストするときにリーダを使用せずに正常に動作します。
ありがとうございます。
この方法はありません。また、pageable引数を持つidで検索するのは何ですか? 'findById'や実際に' findOne'も 'findAll'と同様に提供されていますので、あなた自身のリポジトリから削除することをお勧めします。彼らは何も追加しません。 –
ありがとうございます。 findOne(long id)を使用しても、リポジトリからすぐには使用できますが、リーダー経由ではうまく動作しません。 – Azhenot
その読み手で 'findOne'を使うのは意味がありませんし、' findOne'や 'findById'に' Pageable'引数を取ることも意味がありません。あなたはidで1つの要素を取得していますが、どうやってそれを並べ替えるのですか? –