ModelMapper устанавливает родительский идентификатор в дочерней таблице двунаправленной OneToMany - PullRequest
0 голосов
/ 30 января 2019

Я использую ModelMapper с Springboot и пытаюсь установить родительский идентификатор в дочерней таблице, но родительский идентификатор по-прежнему равен нулю.

Теперь я понимаю, что в спящем режиме вам нужно установить родительский объект внутри дочернего объекта следующим образом.

class Parent {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    private String name;

    @OneToMany(mappedBy = "parent", cascade = CascadeType.ALL)
    private List<Child> childs;

    //getters / setters
}

class Child {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    private String name;

    @ManyToOne(cascade = CascadeType.ALL)
    @JoinColumn(name="parent_id")
    private Parent parent;

    //getters / setters
}

method() {
    Child child = new Child();
    child.setName("fred");
    Parent parent = new Parent();
    parent.setName("teddy");

    child.setParent(parent);

    Set<Child> childs = new ArrayList<>();
    childs.add(child);

    parent.setChilds(childs);

    session.save(parent)
}

Однако;то, что я ищу, это чтобы дескриптор ModelMapper устанавливал родительское свойство автоматически в дочернем классе, а не вручную устанавливал родительское поле.

У меня есть следующий DTO.

class ParentDTO {
    private Long id;
    private List<ChildDTO> childs;

    //getters / setters
}

class ChildDTO {
    private Long id;
    private String name;
    private ParentDTO parent;

    //getters / setters
}    

с использованием ModelMapper, например, так:

public ParentDTO post(@RequestBody ParentDTO parentDTO) {

   ModelMapper modelMapper = new ModelMapper();
   Parent parent = modelMapper.map(parentDTO, Parent.class);

   parentRepository.save(parent)
   .....
}

Я также хотел бы добавить, что я использую SpringBoot, и я заполняю свой объект DTO с помощью JSON RequestBody, например

{
    "name" : "teddy",
    "child": [
        {
           "name": "fred",
        }
    ]
}

Результаты сохранения

{
    "id" : 1
    "name" : "teddy",
    "child": [
        {
           "parent" null
           "name": "fred",
        }
    ]
}

Существует ли простой способ установить родительское значение в дочернем объекте с помощью ModelMapper?

...