В настоящее время я работаю над отображением DTO, у которого есть два "sub DTOS".
например.
PersonDTO
имеет "firstName"
, "lastName"
, "languageDTO"
, "zipCodeDTO"
теперь в моем PersonMapper я хочу использовать мой "LanguageMapper"
и мой "ZipCodeMapper"
.
но с @Mapper(uses = "")
я могу вызвать только один внешний маппер для использования в моем классе.
Заранее спасибо за помощь
Вот код моего DTO
Это мой ZipCodeDTO:
class ZipCodeDTO {
public static final String FIELD_SEPARATOR = "__";
private String favouriteZipCode;
private String cityName;
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFavouriteZipCode() {
return favouriteZipCode;
}
public void setFavouriteZipCode(String favouriteZipCode) {
this.favouriteZipCode = favouriteZipCode;
}
public String getCityName() {
return cityName;
}
public void setCityName(String cityName) {
this.cityName = cityName;
}
@Override
public String toString() {
return id + FIELD_SEPARATOR + favouriteZipCode + FIELD_SEPARATOR + cityName;
}
}
и это мой PersonDTO:
class PersonDTO
{
public static final String FIELD_SEPARATOR = "__";
private int id;
private String firstName;
private String lastName;
private PictureDTO pictureDTO = new PictureDTO();
private ZipCodeDTO zipCodeDTO = new ZipCodeDTO();
private List<PersonLanguageDTO> personLanguageDTOList = new ArrayList<>();
public List<PersonLanguageDTO> getPersonLanguageDTOList() {
return personLanguageDTOList;
}
public void setPersonLanguageDTOList(List<PersonLanguageDTO> personLanguageDTOList) {
this.personLanguageDTOList = personLanguageDTOList;
}
public PictureDTO getPictureDTO() {
return pictureDTO;
}
public void setPictureDTO(PictureDTO pictureDTO) {
this.pictureDTO = pictureDTO;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public ZipCodeDTO getZipCodeDTO() {
return zipCodeDTO;
}
public void setZipCodeDTO(ZipCodeDTO zipCodeDTO) {
this.zipCodeDTO = zipCodeDTO;
}
}
и это мой PersonLanguageDTO
class PersonLanguageDTO{
public static final String FIELD_SEPARATOR = "__";
private String knowledge;
private int personId;
private LanguageDTO languageDTO = new LanguageDTO();
public String getKnowledge() {
return knowledge;
}
public void setKnowledge(String knowledge) {
this.knowledge = knowledge;
}
public int getPersonId() {
return personId;
}
public void setPersonId(int personId) {
this.personId = personId;
}
public LanguageDTO getLanguageDTO() {
return languageDTO;
}
public void setLanguageDTO(LanguageDTO languageDTO) {
this.languageDTO = languageDTO;
}
@Override
public String toString() {
return knowledge + FIELD_SEPARATOR + personId + FIELD_SEPARATOR + languageDTO;
}
}
Это я уже пробовал
@Mapper (componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.ERROR, uses = ZipCodeMapper.class +PersonLanguageMapper.class)
public interface PersonMapper {
@Mappings({
@Mapping(source = "zipCode" , target = "zipCodeDTO" ),
@Mapping(source = "", target = "pictureDTO")
})
PersonDTO toDTO(Person person);
}