我想将字符串集合作为step参数传递。因为我没有找到一个方法 JobParameter
对于collection,我决定将其作为带有逗号分隔值的字符串传递。
执行作业的代码:
@Autowired
private JobLauncher jobLauncher;
@Autowired
private Job myJob;
public void execute() {
List<String> myCollection = getMyCollection();
jobLauncher.run(myJob, new JobParameters(ImmutableMap.<String, JobParameter> builder()
.put("myCollection", new JobParameter(String.join(",", myCollection)))
.build())
...
}
我将步骤定义如下:
@Bean
@StepScope
public Step myStep(@Value("#{jobParameters['myCollection']}") String myCollectionString) {
List<String> myCollection = ArrayUtil.asList(lisReferencesString.split(","));
...
}
但当执行开始时,我得到了一个错误:
org.postgresql.util.PSQLException: ERROR: value too long for type character varying(250)
由于作业参数存储为列值,因此不能将太长的字符串作为参数传递。
你能建议我怎样克服它吗?
2条答案
按热度按时间tp5buhyn1#
我认为您不可能将集合作为作业参数传递。你也许可以
将字符串拆分为每个250个字符,并以多个参数发送它们
将参数保存在临时表或文件中的某个位置,并在需要时读入作业。
请检查这些线
如何在spring批处理中发送自定义对象作为作业参数?
arraylist不能强制转换为org.springframework.batch.core.jobparameter
zkure5ic2#
string类型的作业参数的默认长度为250,请参阅批处理作业执行参数。springbatch提供的脚本只是一个起点,您可以根据需要进行更新。所以在你的情况下,你需要增加
BATCH_JOB_EXECUTION_PARAMS#STRING_VAL
按要求。