@LepikhinEgor
Java developer

Как сохранить OneToMany коллекцию, чтобы у ее элементов записался id родителя?

У меня есть объект ControllCommand, который полностью(вместе с коллекцией commands) заполняется из @RequestBody из контроллера. При сохранении его через session.save() он нормально сохраняется вместе с коллекцией в базу, но у элементов коллекции внешний ключ не прописывается(null).
Можно ли это как-нибудь просто исправить?
Или так и придется сохранять сначала родительский объект, потом получать его id, прописывать их каждому элементу коллекции и потом уже их сохранять?
ControlCommand
@OneToMany(mappedBy = "command", orphanRemoval = true, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    private List<CommandCondition> conditions;

CommandCondition
@JoinColumn(name = "command_id")
    @ManyToOne(fetch = FetchType.LAZY)
    private ControlCommand command;

Приходит в @RequestBody
{"targetName":"hkuk,","action":0,"value":2,"conditions":[{"sensorName":"Включить","conditionType":0,"value":-1}]}
  • Вопрос задан
  • 35 просмотров
Решения вопроса 1
@LepikhinEgor Автор вопроса
Java developer
Решил сам, в итоге оказалось, что чтобы у элементов коллекции прописался id достаточно было просто им всем прописать ссылку на самого родителя. Примерно так:
command.getConditions().forEach(condition -> condition.setCommand(command));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы