[英]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.