2

我有以下 DTO 和域对象。我正在使用 Mapstruct 将域对象复制到 DTO 对象。

public class AddressDomain {
            private String street;
            private Telephone telephone;
    }
public class CompanyDomain{
        private String id;
        private Address address;
}

public class AddressDTO {
            private String street;
            private Telephone telephone;
    }
public class CompanyDTO{
        private String id;
        private Address address;
}

使用下面的 Mapper 将域映射到 DTO。我不想将电话属性从域映射到 DTO。怎么做?我尝试在映射忽略中提供嵌套目标属性,但它给出了错误:

public interface CompanyMapper {
    //**below line gives error**
    @Mapping(target = "address.telephone", ignore=true)
    CompanyDTO map(AddressDTO dto);
}
4

1 回答 1

5

您当前的定义将地址映射到似乎不正确的公司对象。您需要声明两种方法,一种用于映射地址,另一种用于映射公司(其生成的实现将依次调用地址映射方法):

public interface CompanyMapper {

    CompanyDTO map(Company company);

    @Mapping(target="telephone", ignore=true)
    AddressDTO map(Address address);
}
于 2016-10-24T10:01:54.840 回答