簡體   English   中英

MapStruct:是否可以為類型的所有嵌套字段指定使用相同命名的映射?

[英]MapStruct: Is it possible to specify using the same named mapping for all nested fields of a type?

是否可以為嵌套映射器指定限定符而不必為特定類型的 bean 的每個實例指定它?

一些代碼來說明我的觀點。 我有一個父對象,如:

public class ParentDTO {
    ChildDTO childA;
    ChildDTO childB;
    ChildDTO childC;
   // getters, setters, etc.
}

我有一個包含多個映射的 ChildMapper:

@Mapper
public interface ChildMapper {
    @Named("MinimalChildMapper")
    @Mapping(target = "someAttribute", ignore = true)
    ChildDTO toMinimalChildDTO(Child child);

    @Named("ChildMapper")
    ChildDTO toChildDTO(Child child);
}

我知道我可以像這樣指定每個孩子使用哪個子映射器:

@Mapper(uses = ChildMapper.class)
public interface ParentMapper {
    @Mapping(target = "childA", qualifiedByName = "MinimalChildMapping")
    @Mapping(target = "childB", qualifiedByName = "MinimalChildMapping")
    @Mapping(target = "childC", qualifiedByName = "MinimalChildMapping")
    ParentDTO toParentDTO(Parent parent);
}

我想弄清楚的是,是否有某種方法可以使用每個qualifiedByName 中指示的映射類型(ChildDTO),而不是必須為類型的每個實例(childA、childB、childC)指定它。 這可能嗎?

目前這是不可能的。

但是,您可以做的是擁有 2 個ChildMapper (s)。 這樣你就可以在你的ParentMapper使用最小的ParentMapper 另一種選擇是在ParentMapper定義最小映射,而不是重用ChildMapper

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM