Я использую 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?