Поддержка отношений один-ко-многим читает, но не вставляет - PullRequest
0 голосов
/ 22 января 2019

Я использую пружинную загрузку (версия 2.1.1), чтобы создать приложение, которое нуждается в отношениях один-ко-многим и многие-к-одному между двумя классами моделей с требованиями ниже

Модель классов

@Entity
@Table(name="ORGANIZATIONS")
public class Organization{

    @Id
    @GeneratedValue
    Private long id;

    @Column(unique=true)
    Private String name;
}

@Entity
@Table(name="DEPARTMENTS")
Public class Department{

   @Id
   @GeneratedValue
   Private long id;

   @Column(unique=true)
   Private String name;


//…

}

Требования

  1. Как организации, так и отделы должны создаваться отдельными соответствующими API для отдыха.
    • Через API POST / organization мы сможем создать организацию, не создавая отделы в одном вызове API. На самом деле API должен потерпеть неудачу. Я попытался передать элемент json для отдела как часть вызова POST / организаций.
    • При вызове POST / отделов я должен иметь возможность передать идентификатор организации, чтобы связать вновь созданный отдел с организацией.
  2. вызов API GET / organization должен возвращать коллекцию как часть объекта организации

Вопросы

  1. Как связать два модельных объекта? Должен ли я добавить @OneToMany в организации? Какие атрибуты я передаю @OneToMany? Мне нужен похожий @ManyToOne на другой стороне - отдел?

  2. Нужны ли какие-либо особые соображения относительно контроллеров REST?

1 Ответ

0 голосов
/ 22 января 2019

Вам понадобится @ManyToOne для сохранения только в Department, но вам, скорее всего, понадобится @OneToMany в Organization для запроса GET.

Просто убедитесь, что при сохранении отдела вам необходимо:

  • Извлечение из БД организации
  • Установить выбранную организацию на объекте отдела
  • Добавить отдел в список Organization.departments
  • Упорствовать в отделе

Для обработки ошибок верните ответ BAD_REQUEST:

return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
...