When you are defining an update method with a Set
you are actually telling MapStruct please update my current set with the elements from this new set. MapStruct can’t know which element of the set is the same and how to merge 2 sets.
To achieve what you are looking for you’ll have to write some custom code.
@Mapper(componentModel = "spring")
public interface RelatedCardObjectMapper {
default Set<RelatedCardObject> updateRelatedCardObjectSetFromDto(Set<RelatedCardObjectDto> dtos, @MappingTarget Set<RelatedCardObject> entities) {
// Somehow find the matching object from dtos to update in entities and then invoke relatedCardObjectFromDto with it
}
@Mapping(source = "dto.id", target = "entity.id", nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE)
RelatedCardObject relatedCardObjectFromDto(RelatedCardObjectDto dto, @MappingTarget RelatedCardObject entity);
}
CLICK HERE to find out more related problems solutions.