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?

questionAnswers(2)

yourAnswerToTheQuestion