Как насчет расширения jquery для этого?
(function () {
var ev = new $.Event('remove'),
orig = $.fn.remove;
var evap = new $.Event('append'),
origap = $.fn.append;
$.fn.remove = function () {
$(this).trigger(ev);
return orig.apply(this, arguments);
}
$.fn.append = function () {
$(this).trigger(evap);
return origap.apply(this, arguments);
}
})();
$(document).on('append', function (e) { /*write your logic here*/ });
$(document).on('remove', function (e) { /*write your logic here*/ ) });
Jquery 1.9+ построил поддержку для этого (я слышал, что не тестировался).
Проблема в этой строке
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);
}
}
Предполагаю, что вы используете репозиторий spring-data-jpa. Знайте, если это иначе. Вы пытаетесь использовать save
api, который сохраняет только одну сущность. Вам понадобится saveAll()
, который сохраняет все данные объекта. Пожалуйста, прочтите документацию.
Изменить: Обновлен ответ для сохранения всех записей Метод сохранения вернет всех сотрудников, поэтому измените тип на List<Employees>
public interface EmployeeRepository extends Repository <Employee, Long>
List<Employee> saveAll(List<Employee> employee);
}
Еще лучше использовать один из предустановленных интерфейсов для простых операций CRUD, например CrudRepository
. Это уменьшает код шаблона, который вы можете записать.
https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories
public interface EmployeeRepository extends CrudRepository <Employee, Long>
}