modelMapper конвертация Entity в DTO с разным количеством полей в source и destination
Помогите, пожалуйста, разобраться с modelMapper. Ситуация следующая. Есть таблица с шаблонами заказов Она связана отношением
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL) @JoinTable(
name = "ORDER_FIELDS",
joinColumns = {@JoinColumn(table = "ORDER_TEMPLATE", name = "ORDER_ID", referencedColumnName =
"ID")},
inverseJoinColumns = @JoinColumn(table = "ORDER_FIELD", name = "FIELD_ID", referencedColumnName = "ID"))
с таблицей доп. опций. При изменении связанных полей (удаление или добавление), неизмененые значения записываются новой строкой. Этого не должно быть. Доп. опции могут быть добавлены самостоятельно через отдельный интерфейс, а при редактировании заказа должны меняться только в заказе, не влияя на таблицу доп. опций. сейчас вот так:
private OrderTemplate convertToEntity(OrderTemplateDto dto) {
modelMapper = mapper();
OrderTemplate entity = modelMapper.map(dto, OrderTemplate.class);
return entity;
}
маппер настроен так:
private ModelMapper mapper() {
ModelMapper mapper = new ModelMapper();
mapper.getConfiguration()
.setMatchingStrategy(MatchingStrategies.STRICT)
.setFieldMatchingEnabled(true)
.setSkipNullEnabled(true);
return mapper;
}
При каждом изменении ORDER_TEMPLATE в таблицу ORDER_FIELDS дописываются поля, связанные с ORDER_TEMPLATE. Это неправильно, ORDER_FIELDS не должна изменяться с изменением ORDER_TEMPLATE. Должны обновляться ссылки. Перерыл много ресурсов, ответа не нашел.