春季批次jpa与多对一的关系

时间:2018-01-26 01:46:15

标签: spring-data-jpa spring-batch

我试图导入csv文件来填充我的数据库。

City {
  String name;
  @ManyToOne
  Country country;
  String State;
  double area;
}
Country {
  String name;
  String code;
}

这是一个csv记录示例:

city_name  state  country_name  country_code  area  garbage_data
  Toronto   Ontario   Canada       CA        205.3     .....

我使用spring数据JPA来处理数据库事务。 这是我的春季批次代码:

    @Bean
    public FlatFileItemReader<City> reader() {
        FlatFileItemReader<City> reader = new FlatFileItemReader<>();
        reader.setResource(new ClassPathResource("Hotel-Cities.csv"));
        reader.setLineMapper(new DefaultLineMapper<City>() {
            {
                setLineTokenizer(new DelimitedLineTokenizer() {
                    {
                        setIncludedFields(new int[]{0,1,2,3,4});
                    }
                });
                **//what to do here to map city that includes country?**
                setFieldSetMapper(new BeanWrapperFieldSetMapper<City>() {
                    {
                        setTargetType(City.class);
                    }
                });
            }
        });
        return reader;
    }

由于城市与国家有多对一关系,我应该在哪里做dao.save(country);city.set(country); dao.save(city);

从我学到的东西,读者读取csv列并将值映射到对象,writer将对象写入数据库。我仍然不知道如何解决实体参考。

PS。将字符串转换为double时会出现类型不匹配错误,如何解决?

0 个答案:

没有答案