MapStruct: mapeando 2 objetos para um terceiro
Eu tenho Object1 e Object2. Agora, quero mapear o objeto3, com atributos de 1 e 2.
Diga, eu tenho 2 objetos:
1. User: {first_name, last_name, id}
2. Address: {street, locality, city, state, pin, id}
Agora, com estes, quero mapear isso em
User_View: {firstName, lastName, city, state}.
Onde, first_name e last_name serão do objeto Usuário e cidade e estado do objeto Endereço.
Agora, minha pergunta é: como fazer isso?
No entanto, atualmente, estou fazendo assim
@Mapper
public abstract class UserViewMapper {
@Mappings({
@Mapping(source = "first_name", target = "firstName"),
@Mapping(source = "last_name", target = "lastName"),
@Mapping(target = "city", ignore = true),
@Mapping(target = "state", ignore = true)
})
public abstract UserView userToView(User user);
public UserView addressToView(UserView userView, Address address) {
if (userView == null) {
return null;
}
if (address == null) {
return null;
}
userView.setCity(address.getCity());
userView.setState(address.getState());
return userView;
}
}
Mas, aqui, eu tenho que escrever manualmente o mapeamento emaddressToView()
.
Portanto, existe alguma maneira de evitar isso?
Ou, qual seria a maneira preferida de lidar com essas situações?