Как одной операцией создать записи связанных таблиц @OneToMany?

Коллеги, как создать записи подчиненной таблицы, которые приходят в json вместе с записью основной таблицы? У меня есть модели Employee и подчиненная ей Contact. Можно ли реализовать такое одной операцией, одним json?

Или нужно передавать в контроллер два json: для Employee и для Contact? Например, сначала записывать Employee, потом Contact уже имея Employee.

Сейчас если я передаю одним json, то в поле employee_id записывается null .

{
    "firstName": "Oleg",
    "contacts": 
        [
            {
                "value":  "+7-914-502-10-10",
                "employee": {"id": ...} // что здесь нужно указать и можно ли?
            }
        ]
}

employee

@Entity
@Table(name = "employee")
public class Employee {

    @Id
    @Column(name = "id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @Column(name = "first_name")
    private String firstName;

    @OneToMany(mappedBy = "employee", cascade = CascadeType.ALL) 
    private List<Contact> contacts;

}

contact

@Entity
@Table(name = "contact")
public class Contact {

    @Id
    @Column(name = "id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @Column(name = "value")
    private String value;

    @ManyToOne
    @JoinColumn(name = "employee_id", referencedColumnName = "id")
    private Employee employee;

}

Контроллер

@PostMapping
public void create(@RequestBody Employee employee){
    employeeRepository.save(employee);
}

Ответы (1 шт):

Автор решения: vi0

Понял, как связать таблицы, если передаю одним json. Стандартно:

@Service
public class EmployeeService {

    private final EmployeeRepository employeeRepository;

    @Transactional
    public void save(Employee employee) {
        var contacts = employee.getContacts();
        for (Contact contact: contacts) {
            contact.setEmployee(employee);
        }

        employeeRepository.save(employee);
    }
→ Ссылка