Я новичок в использовании 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» параметр (ы). Возможно, вы имели в виду "null"?
- Неизвестное свойство "firstName" в типе результата com.personal.portfolio.dto.UserDTO. Вы имели в виду «null»?
- В параметрах источника нет свойства с именем «joiningDate». Вы имели в виду пустой "?
- Неизвестное свойство" joiningDate "в типе результата java .util.List. Вы имели в виду" пустой "?
Я знаю, что мой дизайн может быть неправильно, но я намеренно делаю это таким образом, чтобы понять, как работает MapStruct. Любезный кто-нибудь может помочь мне понять, какую ошибку я делаю?