В чем ошибка, при сохранение в базу данных?
Подскажите что не так делаю
Есть service, в котором пытаюсь реализовать сохранение данных о сотруднике и фото в локальную папку, сохранение фото пытаюсь вынести в отдельный метод, и при сохранение через репозиторий выдает ошибку 2021-11-15 22:52:04.107 WARN 24762 --- [nio-8080-exec-2] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [java.lang.NullPointerException]
Сам код
@Service
public class EmployeeServiceImpl implements EmployeeService{
@Autowired
EmployeeRepository employeeRepository;
@Autowired
AttachmentRepository attachmentRepository;
@Autowired
EmployeeMappingUtils mappingUtils;
SavingFileUtil savingFileUtil;
@Override
public List<EmployeesListResponseDto> getAllEmployees() {
List<EmployeesListResponseDto> allEmployees = employeeRepository.findAllActualHistoriesOfEmployees().stream() //создали из листа стрим
.map(mappingUtils::convertToEmployeeDto) //оператором из streamAPI map, использовали для каждого элемента метод mapToEmployeeDto из класса MappingUtils
.collect(Collectors.toList()); //превратили стрим обратно в коллекцию, а точнее в лист;
if (allEmployees.isEmpty()) {
throw new NoSuchEmployeeException("Employees is not in Database");
}
return allEmployees;
}
@Override
public EmployeeCreatingDto saveEmployee(MultipartFile file, String data) {
EmployeeCreatingDto employeeDto;
AttachmentEntity attachmentEntity;
//Десериализируем json в объект
Gson gson = new DeserializeLocalDateTime().gsonDeserializeLocal();
employeeDto = gson.fromJson( data , EmployeeCreatingDto.class);
//Конвертируем Dto в Entity
EmployeeEntity employeeEntity = mappingUtils.convertToEmployeeEntity(employeeDto);
//Сохраняем сотрудника
EmployeeEntity employeeResponse = employeeRepository.save(employeeEntity);
// TODO Как сделать чтобы было от метода
savingFileUtil.handleFileUpload(file, 1L);
return null;
}
}
и сама утилита для сохранения фото и создание о фото записи в БД
@Component
public class SavingFileUtil {
// TODO Как поступить с запросом пути, запросить через интерфейс репозитория?
@Value("${upload.path}")
private String uploadPath;
AttachmentRepository attachmentRepository;
public AttachmentEntity handleFileUpload(MultipartFile uploadFile, Long employeeId) {
File uploadDir = new File(uploadPath);
// Проверяем существует такая директория, если нет то создаем
if (!uploadDir.exists()) {
uploadDir.mkdir();
}
// Создаем рандомно имя вложению
String uuidFile = UUID.randomUUID().toString();
String resultFileName = uuidFile + "-" + uploadFile.getOriginalFilename();
try {
uploadFile.transferTo(new File(uploadPath + "/" + resultFileName));
} catch (IOException e) {
e.printStackTrace();
}
// Создаем запись в базе данных о вложение
AttachmentEntity newAttachment = new AttachmentEntity();
newAttachment.setFileName(resultFileName);
newAttachment.setContentType(uploadFile.getContentType());
return attachmentRepository.save(newAttachment);
}
}