Azh*_*not 5 java spring spring-batch
我在springBatch步骤中为读者设置了一个ItemRepositoryReader.
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;
}
Run Code Online (Sandbox Code Playgroud)
这是我的存储库中的行.
public interface EcheanceRepository extends JpaRepository<EcheanceEntity, Long>{
public EcheanceEntity findById(long id);
@Override
public List<EcheanceEntity> findAll();
Run Code Online (Sandbox Code Playgroud)
如果使用方法findAll(),所以没有任何参数,它工作正常.但是如果我使用方法findById(long id),我会从ItemRepositoryReader中得到"没有这样的方法异常,findById(java.lang.Long,org.springframework.data.domain.PageRequest)".当我通过立即使用存储库测试它时,该方法可以正常工作而无需使用阅读器.
谢谢.
如果使用RepositoryItemReader#setMethodName方法,则需要在存储库方法签名的最后位置添加Pageable类型的参数:
public interface EcheanceRepository extends JpaRepository<EcheanceEntity, Long> {
public Page<EcheanceEntity> findById(long id, Pageable pageable);
...
Run Code Online (Sandbox Code Playgroud)
您可以在文档中找到其说明:http : //docs.spring.io/spring-batch/apidocs/org/springframework/batch/item/data/RepositoryItemReader.html#setMethodName-java.lang.String-
Run Code Online (Sandbox Code Playgroud)public void setMethodName(java.lang.String methodName)指定存储库上要调用的方法。此方法必须将Pageable作为最后一个参数。
| 归档时间: |
|
| 查看次数: |
6647 次 |
| 最近记录: |