Я новичок в использовании MapStruct и поэтому сталкиваюсь с некоторыми проблемами.
У меня есть следующие классы моделей: -
@Data
class User {
@Field
private String fullName;
@Field("experience")
private List<Experience> workExperience;
//other fields
}
@Data
class Experience {
private Date joiningDate;
//other fields
}
Теперь у меня есть следующие DTO
@Data
class UserDTO {
private String firstName;
private String lastName;
private List<ExperienceDTO> workExperience;
//other fields
}
@Data
class ExperienceDTO {
private String joiningDate;
//other fields
}
Написали интерфейс UserMapper как: -
@Mapper(componentModel = "spring")
public interface UserMapper {
@Mappings({
@Mapping(target = "firstName",source = "fullName",
qualifiedByName = "firstNameExtractor"),
@Mapping(target = "lastName",source = "fullName",
qualifiedByName = "lastNameExtractor")
})
UserDTO userToUserDTO(User user);
@Mappings({
@Mapping(target = "joiningDate", source = "joiningDate",
dateFormat = "yyyy-MM-dd HH:mm:ss")
})
List<ExperienceDTO> experienceToExperienceDTO(List<Experience> experience);
@Named("firstNameExtractor")
public static String getFirstName(String name){
String[] nameParts = name.split(" ");
return nameParts[0];
}
//similarly have a lastNameExtractor
Но я получаю следующие ошибки: -
- В исходных параметрах не существует свойства с именем "fullName". Ты хотел сказать "нулевой"?
- Неизвестное свойство firstName в типе результата com.personal.portfolio.dto.UserDTO. Ты хотел сказать "нулевой"?
- В исходных параметрах не существует свойства с именем «joiningDate». Ты хотел сказать пустой"?
- Неизвестное свойство «joiningDate» в типе результата java.util.List. Ты хотел сказать "пустой"?
Я знаю, что мой дизайн может быть неправильным, но я намеренно делаю это таким образом, чтобы понять, как работает MapStruct. Пожалуйста, кто-нибудь может помочь мне понять, какую ошибку я делаю?