当前位置: 首页 > 知识库问答 >
问题:

Mapstruct未映射“addLine1”字段

窦哲彦
2023-03-14

“”“@Data@Builder(toBuilder=true)@allargsconstuctor@noargsconstuctor public class ServiceAddress{private String addLine1;private String addLine2;private String city;private String state;private String country;private String zip;private String zipCodeExtension;}”

@Data
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
@Builder(toBuilder = true)
@NoArgsConstructor
@AllArgsConstructor
public class OrderDTO {
private List<OrderElement> orderElement;

@Data
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
@Builder(toBuilder = true)
@NoArgsConstructor
@AllArgsConstructor
public static class OrderElement {

@Override
public boolean equals(Object o) {
return o == this;
}

private ServiceAddress serviceAddress;

@Data
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
@Builder(toBuilder = true)
@NoArgsConstructor
@AllArgsConstructor
public static class ServiceAddress {
private String addLine1;
private String addLine2;
private String city;
private String state;
private String country;
private String zip;
}
}
}

@Mapper(componentModel = "spring")
public interface test {
ServiceAddress toServiceAddress(OrderDTO.OrderElement.ServiceAddress serviceAddress);
}

@Override
public lib.dao.dto.externalconnector.onebill.ServiceAddress toServiceAddress(ServiceAddress serviceAddress) {
if ( serviceAddress == null ) 
return null;
}

ServiceAddressBuilder serviceAddress1 = lib.dao.dto.externalconnector.onebill.ServiceAddress.builder();

serviceAddress1.city( serviceAddress.getCity() );
serviceAddress1.state( serviceAddress.getState() );
serviceAddress1.country( serviceAddress.getCountry() );
serviceAddress1.zip( serviceAddress.getZip() );

return serviceAddress1.build();
}

“”

共有1个答案

屈宏爽
2023-03-14

addLine1这样的属性没有映射的原因是它被视为列表属性line1的加法器。

您可以将该setter命名为setAddLine1或禁用构建器支持(MapSTRt将使用DTO中的setAddLine1)。

 类似资料:
  • 我有麻烦映射一个嵌套dto字段正确与MapStruct。我有几个DTO: 具有相应的映射器 到目前为止,一切工作都很好,生成的代码自动连接其他需要的映射器来正确地构建DTO。例如生成的仪器映射器实现 现在,当我试图创建一个包含嵌套工具dto的映射器时遇到了麻烦。映射器应使用instrumentMapper正确创建所需的dto。DTO: 映射器: 生成的代码: 现在media mapper得到了很好

  • 假设我有这些实体: null

  • 我想映射2个模型,其中每个模型都有几乎相同的枚举。让我展示: 第一个模型有枚举: 第二个模型具有枚举: 我有这样的自定义映射方法: 然后我用: 但是你可以得到: 我还创建了枚举映射器,如: 但我不需要单独设置,只希望枚举字段映射到内部映射中。简单地说,当我做枚举时,也应该映射。 谢谢 p、 对不起我的英语,希望我的问题有意义:)

  • 目标对象 我希望每个都是的映射,带有,mapstruct生成如下所示: 但相反,我得到了一个编译错误: 源参数中不存在名为“Roleids”的属性。你是说“空”吗?

  • 我尝试使用MapStruct编写映射器类,如下所示: 目前它显示了“未知属性”“customer.customerid”和“usertypes.usertype.userid”等错误。有人能帮我用MapStruct映射所有这些元素吗? 问题2:我们如何绘制跟踪图?1)customerId usertypes->user->userid 2)pdtPrice offers->OffersType->

  • 下面的例子中,我有一个单独的域层和一个单独的持久层。我使用Mapstruct进行映射,当从域映射到实体或从实体映射到域时,会出现堆栈溢出,因为双向引用总是被调用- 用于映射的类非常基本