2017-08-03 574 views
0

我有一个Mapper.I问题,我正在使用MAPtruct处理器来构建Maven项目。所有时间我收到警告: 警告:(15,16)java:未映射的目标属性:“从,到”。 警告:(13,13)java:未映射的目标属性:“clientFrom,clientTo”。 我想要做什么?类客户端运行良好并创建一个客户端。Java:未映射的目标属性

@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); 
} 

回答

1

错误Unmapped target properties: "<list of properties>"通常表示在适当的方法和你的情况这意味着MapStruct找不到fromtoMessageDTO toMessageDTO(Message message)clientFromclientToMessage toMessage(MessageDTO messageDTO)映射的映射。

为了解决这个问题,你将有明确定义的不同属性之间的映射。

你的映射器的样子(我假设mapstruct-jdk8使用):

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

    @Mapping(target = "clientFrom", source = "from") 
    @Mapping(target = "clientTo", source = "to") 
    Message toMessage(MessageDTO messageDTO); 

    @InheritInverseConfiguration //MapStruct will automatically reverse the defined mappings from toMessage 
    MessageDTO toMessageDTO(Message message); 

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

为了更好地理解看看here。在文档中。欲了解更多关于@InheritInverseConfiguration的信息,请看here

如果属性(getter/setter方法)的名称是相同的MessageMessageDTO,那么你就不需要@Mapping注释

+0

它的工作,谢谢! –