我在第一次使用spring批處理和spring數據jpa。 Spring批處理讀取文本文件說aCode,aName,sCode。 我有這些鍵映射像下面一個POJO,一個按鍵是另一種類型的對象spring批處理 - FlatFileItemReader - 令牌類型爲對象
public class Pojo{
private AnotherObject sCode;
private String aName;
private String aCode;
}
下面是我在BatchConfiguration類讀者的。 如何處理這個AnotherObject。 我碰到一個錯誤說:
所致:org.springframework.beans.NotWritablePropertyException:無效的屬性bean類[POJO的]的「SCODE」:重複匹配找到該場所在輸入鍵距離< = 5:[ 「SCODE」, 「ACODE」, 「aName」。 (考慮減少距離限制或改變輸入鍵名以獲得更接近的匹配。)
@Bean
@StepScope
public FlatFileItemReader<Area> reader(
@Value("#{stepExecutionContext[fromId]}") final String fromId,
@Value("#{stepExecutionContext[toId]}") final String toId,
@Value("#{stepExecutionContext[name]}") final String name) {
FlatFileItemReader<Area> reader = new FlatFileItemReader<>();
try{
reader.setResource(new ClassPathResource("area_temp.txt"));
LineMapper<Area> areaMapper = createAreaLineMapper();
reader.setLineMapper(areaMapper);
}
catch(Exception e){
e.printStackTrace();
}
return reader;
}
private LineMapper<Area> createAreaLineMapper() {
DefaultLineMapper<Area> areaLineMapper = new DefaultLineMapper<>();
LineTokenizer areaTokenizer = createAreaTokenizer();
areaLineMapper.setLineTokenizer(areaTokenizer);
FieldSetMapper<Area> areaInformationMapper = createAreaInformationMapper();
areaLineMapper.setFieldSetMapper(areaInformationMapper);
return areaLineMapper;
}
private LineTokenizer createAreaTokenizer() {
DelimitedLineTokenizer areaLineTokenizer = new DelimitedLineTokenizer();
areaLineTokenizer.setDelimiter("|");
areaLineTokenizer.setNames(new String[]{"sCode","aCode","aName"});
return areaLineTokenizer;
}
private FieldSetMapper<Area> createAreaInformationMapper() {
BeanWrapperFieldSetMapper<Area> areaMapper = new BeanWrapperFieldSetMapper<>();
areaMapper.setTargetType(Area.class);
return areaMapper;
}
感謝您的輸入。當pojo和{「sCode」,「aCode」,「aName」}中的名稱匹配時,爲什麼我們應該重寫distancelimit?在將其設置爲areaMapper.setDistanceLimit(0)後,distancelimit> 5或小於5 – user700
;這個問題已經消失了,但我又收到了另一個錯誤:「org.springframework.beans.NotWritablePropertyException: 」bean屬性'ePCode'的無效屬性' setter的參數類型是否與getter的返回類型相匹配?「我確信,AnotherObject擁有公共getter和ePCode的公共setter – user700