Java: Unmapped target properties

Mike Evans picture Mike Evans · Aug 3, 2017 · Viewed 9.9k times · Source

I have a problem with Mapper.I am using a mapstruct-processor to build Maven project. All time I get a warning: Warning:(15, 16) java: Unmapped target properties: "from, to". Warning:(13, 13) java: Unmapped target properties: "clientFrom, clientTo". What did I suppose to do with that? Class Client works well and creates a Client.

 @Entity
public class Message {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

private String message;

@ManyToOne(cascade = {CascadeType.ALL})
@JoinColumn(name = "client_from")
private Client clientFrom;

@ManyToOne
@JoinColumn(name = "client_to")
private Client clientTo;

public Message(){}

public Long getId() {
    return id;
}

public void setId(Long id) {
    this.id = id;
}

public String getMessage() {
    return message;
}

public void setMessage(String message) {
    this.message = message;
}

public Client getClientFrom() {
    return clientFrom;
}

public void setClientFrom(Client clientFrom) {
    this.clientFrom = clientFrom;
}

public Client getClientTo() {
    return clientTo;
}

public void setClientTo(Client clientTo) {
    this.clientTo = clientTo;
}


}


public class MessageDTO {

private Long id;
private String message;
private ClientDTO from;
private ClientDTO to;

public MessageDTO(){}

public Long getId() {
    return id;
}

public void setId(Long id) {
    this.id = id;
}

public String getMessage() {
    return message;
}

public void setMessage(String message) {
    this.message = message;
}

public ClientDTO getFrom() {
    return from;
}

public void setFrom(ClientDTO from) {
    this.from = from;
}

public ClientDTO getTo() {
    return to;
}

public void setTo(ClientDTO to) {
    this.to = to;
}
}



 @Mapper(componentModel = "spring", uses = {ClientMapper.class})
public interface MessageMapper {

Message toMessage(MessageDTO messageDTO);

MessageDTO toMessageDTO(Message message);

List<Message> toMessageList(List<MessageDTO> list);
List<MessageDTO> toMessageDTOList(List<Message> list);
}

Answer

Anatoly Tutov picture Anatoly Tutov · Feb 12, 2019

In latest versions of MapStruct you can:

  1. define @Mapping annotation with ignore=true attribute for any field that should not be mapped OR
  2. add special reporting policy to your mapper interface to suppress warnings on all unmapped fields at once, like this:
    @Mapper(unmappedTargetPolicy = ReportingPolicy.IGNORE)