JPA Hibernate - как (REST api) объект POST с внешним ключом в качестве идентификатора? - PullRequest
0 голосов
/ 20 июня 2020

У меня есть две сущности с отображением «один ко многим». Теперь я хотел бы добавить новый объект в базу данных (новый сотрудник с внешним ключом отдела).

Какой самый простой способ сделать это?

Вот как выглядят объекты например:

@Entity
public class Employee {
    ...
    @ManyToOne(fetch = FetchType.EAGER, optional = false)
    @JoinColumn(name = "department_id", nullable = true)
    private Department department;
}

@Entity
public class Department {
    ...
    @OneToMany(mappedBy = "department", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    @JsonBackReference
    private Set<Employee> employees;
}

Цель состоит в том, чтобы пройти такой тип json:

{
    "surname": "smith",
    "department": 1
}

1 Ответ

1 голос
/ 20 июня 2020

Стратегия отказоустойчивости

  • Поиск сотрудника по фамилии: smith. Если не существует, верните json с таким сообщением: «Пользователь smith не существует» и статус http: 400 (неверный запрос)
  • Отдел поиска по идентификатору: 1. Если не существует, вернуть json с этим сообщением: «отдел не существует» и статус http: 400 (неверный запрос)
  • Если предыдущие предложения были в порядке, у вас будет экземпляр Employee и Department, готовый к использованию
    Employee emp = employeeRepository.findBySurname("smith");
    //if emp does not exist, instance a new one
    Department dep = employeeRepository.findBySurname("smith");
    emp.setDepartment(dep);
    employeeRepository.save(emp);
  • Hibernate и jpa должны сохранять вашу простую сущность

Прямая стратегия

  • Экземпляр вашего сотрудника с фамилией Смит
  • Создайте экземпляр вашего отдела с идентификатором: 1
  • Установите экземпляр вашего отдела в экземпляре сотрудника
  • Выполнить employeeRepository.save(emp);
  • Используйте команду try catch, чтобы вернуть сообщение json в случае ошибки: «Внутренняя ошибка при сохранении сотрудника ...»
...