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

时间:2014-10-27 08:22:12

标签: spring-batch

  1. 尝试仅在项目
  2. 中使用java anotations将FieldSet自动映射到域对象
  3. 未能履行以下规定:

    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");
        }
    

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

  4. 以下是我的代码:

    @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;
        }
    
  5. 精确堆栈跟踪

    退出-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)

1 个答案:

答案 0 :(得分:2)

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