使用java注释的Spring批处理java.lang.IllegalStateException:无法创建没有元数据的属性

exp*_*rer 6 spring-batch

  1. 尝试仅在项目中使用java anotations将FieldSet自动映射到域对象
  2. 失败的原因如下:

    BeanWrapperFieldSetMapper.mapFieldSet (第184行)在以下行(第187行):

    binder.bind(new MutablePropertyValues(getBeanProperties(copy, fs.getProperties())));
    @Override
    public Properties getProperties() {
        if (names == null) {
            throw new IllegalStateException("Cannot create properties without meta data");
        }
    
    Run Code Online (Sandbox Code Playgroud)

    注意:我没有指定名称,因为我正在尝试Automap.

  3. 以下是我的代码:

    @Bean
        public LineMapper<Partner> lineMapper() {
            DefaultLineMapper<Partner> lineMapper = new DefaultLineMapper<Partner>();
            DelimitedLineTokenizer lineTokenizer = new DelimitedLineTokenizer();
            BeanWrapperFieldSetMapper<Partner> fieldSetMapper = new BeanWrapperFieldSetMapper<Partner>(); 
            fieldSetMapper.setBeanFactory(getApplicationContext()); 
            fieldSetMapper.setTargetType(Partner.class);
            lineMapper.setLineTokenizer(lineTokenizer);
            lineMapper.setFieldSetMapper(fieldSetMapper);
            return lineMapper;
        }
    
    Run Code Online (Sandbox Code Playgroud)
  4. 精确的堆栈跟踪

    退出-DESCR.:org.springframework.batch.item.file.FlatFileParseException: Parsing error at line: 1 in resource=[class path resource [partner-import.csv]], input=[Mustermann,Max,dahiya.naveen@gmail.com,m]

    引起: java.lang.IllegalStateException: Cannot create properties without meta data at org.springframework.batch.item.file.transform.DefaultFieldSet.getProperties(DefaultFieldSet.java:745)

Luc*_*cci 2

您缺少设置likeTokenizer.setNames()因为您正在使用名称(属性的名称Partner