我创建了一个 REST API POST 以读取文件 csv 并以这种方式更新我的 postgres 表:
@Override
public void insertDataFromCSV(CsvDataInputBean csvDataInputBean)
throws IllegalStateException, FileNotFoundException {
String path = csvDataInputBean.getPath();
log.info("INPUT PATH ", csvDataInputBean.getPath().toString());
List<CsvPojo> csvFile = new CsvToBeanBuilder<CsvPojo>(new FileReader(path)).withType(CsvPojo.class).build()
.parse();
UserEntity userEntity = new UserEntity();
for (CsvPojo csv : csvFile) {
log.info("CSV User Name: ", csv.getName());
log.info("CSV User Surname: ", csv.getSurname());
log.info("CSV User Gender: ", csv.getGender());
log.info("CSV User Age: ", csv.getAge());
log.info("CSV User CF: ", csv.getCf());
log.info("CSV User Mail: ", csv.getMail());
log.info("CSV User Address: ", csv.getAddress());
userEntity.setId(csv.getId());
userEntity.setName(csv.getName());
userEntity.setSurname(csv.getSurname());
userEntity.setGender(csv.getGender());
userEntity.setAge(csv.getAge());
userEntity.setCf(csv.getCf());
userEntity.setMail(csv.getMail());
userEntity.setAddress(csv.getAddress());
userRepository.save(userEntity);
userRepository.flush();
log.info("Saved the Record: ", csv.getId());
}
}
但是当我尝试在 Postman 上进行测试时,我得到了这个错误:
我没有看到带有字段值的日志:
2023-05-02 19:31:55.941 INFO 19836 --- [nio-8080-exec-1] c.u.u.service.impl.UserServiceImpl : CSV User Name:
2023-05-02 19:31:55.941 INFO 19836 --- [nio-8080-exec-1] c.u.u.service.impl.UserServiceImpl : CSV User Surname:
2023-05-02 19:31:55.941 INFO 19836 --- [nio-8080-exec-1] c.u.u.service.impl.UserServiceImpl : CSV User Gender:
2023-05-02 19:31:55.942 INFO 19836 --- [nio-8080-exec-1] c.u.u.service.impl.UserServiceImpl : CSV User Age:
2023-05-02 19:31:55.942 INFO 19836 --- [nio-8080-exec-1] c.u.u.service.impl.UserServiceImpl : CSV User CF:
2023-05-02 19:31:55.942 INFO 19836 --- [nio-8080-exec-1] c.u.u.service.impl.UserServiceImpl : CSV User Mail:
2023-05-02 19:31:55.942 INFO 19836 --- [nio-8080-exec-1] c.u.u.service.impl.UserServiceImpl : CSV User Address:
2023-05-02 19:31:56.043 INFO 19836 --- [nio-8080-exec-1] c.u.u.service.impl.UserServiceImpl : Saved the Record:
保存到数据库不正确,它有错位。特别是,它不设置姓名,而是设置姓名而不是姓氏。
CSV 文件具有以下值: 身份证、姓名、姓氏、性别、年龄、Cf、邮件、地址 15,Pablo,Escobar,男,52,PBLESC65T85P456H,[email protected],Via Medein 27
UserEntity 和 CSVPojo 是:
@Entity
@Table(name = "mt_user")
public class UserEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id")
private Integer id;
@Column(name = "name")
private String name;
@Column(name = "surname")
private String surname;
@Column(name = "gender")
private String gender;
@Column(name = "age")
private int age;
@Column(name = "cf")
private String cf;
@Column(name = "mail")
private String mail;
@Column(name = "address")
private String address;
public class CsvPojo {
@CsvBindByName(column = "id")
private Integer id;
@CsvBindByName(column = "name")
private String name;
@CsvBindByName(column = "name")
private String surname;
@CsvBindByName(column = "gender")
private String gender;
@CsvBindByName(column = "age")
private int age;
@CsvBindByName(column = "cf")
private String cf;
@CsvBindByName(column = "mail")
private String mail;
@CsvBindByName(column = "address")
private String address;
我怎么解决它?