Опубликовать массив JSON в Spring Boot 2 JPA

Как насчет расширения 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+ построил поддержку для этого (я слышал, что не тестировался).

0
задан animatorist 13 July 2018 в 07:13
поделиться

2 ответа

Проблема в этой строке

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);
    }

}
0
ответ дан Ashish Kumar 17 August 2018 в 13:42
поделиться
  • 1
    при использовании saveAll (), я получаю сообщение об ошибке: Нет свойства saveAll найдено для типа Employee – animatorist 13 July 2018 в 06:50
  • 2
    Можете ли вы добавить класс employeeService в Question – Ashish Kumar 13 July 2018 в 06:53
  • 3
    public employee employeeService {Employee save (List & lt; Employee & gt; сотрудник); } – animatorist 13 July 2018 в 06:55
  • 4
    Это интерфейс. Можете ли вы добавить свой класс реализации ... Pls измените свой вопрос и добавьте его, чтобы его более «читаемый» – Ashish Kumar 13 July 2018 в 06:57
  • 5
    Я изменил свой вопрос. – animatorist 13 July 2018 в 07:14

Предполагаю, что вы используете репозиторий spring-data-jpa. Знайте, если это иначе. Вы пытаетесь использовать save api, который сохраняет только одну сущность. Вам понадобится saveAll(), который сохраняет все данные объекта. Пожалуйста, прочтите документацию.

https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/repository/CrudRepository.html#saveAll -java.lang.Iterable -

Изменить: Обновлен ответ для сохранения всех записей Метод сохранения вернет всех сотрудников, поэтому измените тип на 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>

    }
0
ответ дан zeagord 17 August 2018 в 13:42
поделиться
  • 1
    Не уверен, что он ... он получит ошибку времени компиляции, а не 500. Не удается сохранить список, если для этого метода требуется один объект. – MaxPower 13 July 2018 в 04:51
  • 2
    Да, я согласен. это будет ошибка компиляции. – zeagord 13 July 2018 в 05:02
  • 3
    @zeagord при использовании saveAll (), I Получить сообщение об ошибке: Нет свойства saveAll найдено для типа Employee – animatorist 13 July 2018 в 06:49
Другие вопросы по тегам:

Похожие вопросы: