Проблема в этой строке
public Employee createEmployee(@Valid @RequestBody List<Employee> employee) {
return employeeService.save(employee); // Problem
}
employeeService.save
может принимать только один объект Entity в вашем случае Employee
Существует 2 способа
1.
public Boolean createEmployee(@Valid @RequestBody List<Employee> lstEmployee) {
try{
for(Employee emp : lstEmployee){
employeeService.save(employee);
}
return true;
}catch(Exception e){}
return false;
}
2.
Используйте saveAll вместо
public Employee createEmployee(@Valid @RequestBody List<Employee> employee) {
return employeeService.saveAll(employee);
}
Редактировать 1:
После добавления класса обслуживания похоже, что вы вручную реализуете так
Вариант 1:
Я бы предложил вам прямо использовать EmployeeRepository
в вашем классе контроллера. Так как при ручном переопределении методов вы фактически не пользуетесь репозиторием
@Autowired
EmployeeRepository employeeRepository;
@PostMapping("/api/employee/save")
public Employee createEmployee(@Valid @RequestBody List<Employee> lstEmployee) {
return employeeRepository.saveAll(lstEmployee);
}
Вариант 2:
Дольше, измените свою реализацию следующим образом. Для объекта может быть некоторая ошибка, но она должна дать вам идею
public interface employeeService{
Employee save(Employee employee);
public <S extends User> List<S> saveAll(Iterable<S> entites);
}
@Service("employeeService")
public class EmployeeServiceImpl implements EmployeeService {
@Autowired
EmployeeRepository employeeRepository;
@Override
public Employee save(Employee employee) {
return employeeRepository.save(employee);
}
@Override
public List<Employee> saveAll(List<Employee> employee) {
return employeeRepository.saveAll(employee);
}
}
Это можно сделать с помощью коррелированного подзапроса, например:
SELECT u.*
FROM usertrack u
WHERE NOT EXISTS (
SELECT 1 FROM usertrack u1 WHERE u1.ts > u.ts AND u1.uid = u.uid
) AND ts >= NOW() - INTERVAL 43830 MINUTE