Я пытаюсь научиться писать приложения RESTful на Java с использованием Jersey и Hibernate, и я пытаюсь понять, как обрабатывать отношения типа родитель / потомок при размещении данных в ресурсе.Я использую JSON для обмена данными, но я не думаю, что это особенно актуально для моей проблемы.
Пример, с которым я работаю, моделирует отношения между сотрудниками и командами.Сотрудник может или не может быть членом одной команды:
GET /team/ - returns a list of teams
POST /team/ - creates a new team
GET /team/1 - returns a list of employees in the team with the ID 1
GET /employee/ - returns a list of employees
POST /employee/ - creates a new employee
GET /employee/1 - returns details about the employee with the ID 1
За этим у меня есть несколько аннотаций в Hibernate: один для команды и один для сотрудника с отношением 1-N междудва (помните, что Сотрудник не может быть членом команды!).Те же POJO также аннотированы как @XmlRootElements, так что JAXB позволит мне передавать их клиенту как JSON.
Свойства для двух сущностей выглядят следующим образом:
Team
Long id;
String name;
String desc;
List<Employee> employees;
Employee
Long id;
Team team;
String name;
String phone;
String email;
Пока все хорошо.Но я изо всех сил пытаюсь понять, как сделать сотрудника членом команды во время создания, просто передав идентификатор команды, а не вложенный объект команды в моем объекте JSON.
Например,Я хотел бы иметь возможность вызывать POST / employee / с JSON, который выглядит следующим образом:
{
"team_id":"1",
"name":"Fred Bloggs",
"phone":"1234567890",
"email":"test@example.com"
}
Но вместо этого я должен передать что-то вроде этого:
{
"team":{
"id":"1",
}
"name":"Fred Bloggs",
"phone":"1234567890",
"email":"test@example.com"
}
Итак, мой вопрос: как другие обрабатывают создание отношений в JSON / REST без обхода целых графов объектов?
Извините, это такой схематичный вопрос, но, как я уже сказал, я только начинаювне, и терминология является проблемой для меня на данном этапе!