Объект (POJO) становится нулевым с помощью расширения Spring Batch Excel

Я использую Spring Batch Excel Extension читать Excel (.xlx) файл. Я клонировал источник и сделал mvn install и добавил зависимость в мой проект Spring Boot. Я также добавил Apache poi-ooxml,

Мой файл Excel содержит простые данные:

Id  Last Name   First Name
3   Aguinaldo   Emilio
4   Aquino      Melchora
5   Dagohoy     Francisco
6   Luna        Antonio
7   Jacinto     Emilio

Это мое Student учебный класс:

@Entity
public class Student {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;
    @NotBlank(message = "{NotBlank.student.lastName}")
    private String lastName;
    @NotBlank(message = "{NotBlank.student.firstName}")
    private String firstName;
    private LocalDateTime createdAt;

    // getters, setters
}

Я создал служебный класс, метод которого выполняет фактическое чтение файла Excel:

public class ExcelUtils {
    public static <T> ItemReader<T> excelToItemReader(Path file, Class<T> clazz) throws Exception {
        PoiItemReader<T> reader = new PoiItemReader<>();
        reader.setLinesToSkip(1);
        System.out.println("File Name: " + file.toString()); // Displays: File Name: uploads\excel\<Excel file selected to import>
        Resource resource = new FileSystemResource(file);
        System.out.println("File exists? " + resource.exists()); // Displays: File exists? true
        reader.setResource(resource);
        reader.setRowMapper(excelRowMapper(clazz));
        return reader;
    }

    private static <T> RowMapper<T> excelRowMapper(Class<T> clazz) {
        BeanWrapperRowMapper<T> rowMapper = new BeanWrapperRowMapper<>();
        rowMapper.setTargetType(clazz);
        return rowMapper;
    }
}

После загрузки файлов я бы выбрал файл для импорта его данных в свою базу данных:

@PostMapping("/import")
public String importStudents(@RequestParam String fileName, RedirectAttributes redirectAttributes) throws Exception {
    ItemReader<Student> studentItemReader = ExcelUtils.excelToItemReader(storageService.load(fileName), Student.class);
    Student student = studentItemReader.read();
    if (student != null) {
        System.out.println("Student has data.");
        studentService.save(student);
    } else {
        System.out.println("Student is null");
        throw new Exception("Student is null");
    }

    redirectAttributes.addFlashAttribute("message", "You successfully imported students data from " + fileName + "!");

    return "redirect:/students";
}

Я не понимаю почему student становится null когда нет ошибок при входе в консоль вообще.

0 ответов

Другие вопросы по тегам