我试图导入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时会出现类型不匹配错误,如何解决?