【问题标题】:mapstruct - List<String> to List<Object>mapstruct - List<String> 到 List<Object>
【发布时间】:2019-12-06 14:49:32
【问题描述】:

我的 DTO 中有一个字符串列表,我想将它映射到一个对象列表中,在映射器中我使用该服务通过该字符串获取对象,但出现以下错误

无法将属性“java.util.List customers”映射到 “java.util.List 客户”。

考虑声明/实现一个映射方法: “java.util.List 地图(java.util.List 值)”。

public class FirstDomain implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    private String  id;

    private String description;

    private List<Customer> customers;
}

public class FirstDomainDTO {

    private String id;

    private String description;

    private List<String> customers;
}

@Mapper(uses = { CustomerService.class })
public interface FirstDomainMapper extends EntityMapper<FirstDomainDTO, FirstDomain> {

    @Mapping(source = "customers", target = "customers")
    FirstDomainDTO toDto(FirstDomain firstDomain);

    @Mapping(source = "customers", target = "customers")
    FirstDomain toEntity(FirstDomainDTO firstDomainDTO);

    default String fromCustomer(Customer customer) {
        return customer == null ? null : customer.getCode();
    }

}

【问题讨论】:

  • 尝试将qualifiedByName 或qualifiedByClass 作为@Mapping 注释中的参数进行转换。

标签: java spring dto mapstruct


【解决方案1】:

您收到的错误消息应该足以帮助您了解问题所在。在这种情况下,MapStruct 不知道如何从List&lt;String&gt; 映射到List&lt;Customer&gt;。反过来也可以,因为你已经定义了

default String fromCustomer(Customer customer) {
    return customer == null ? null : customer.getCode();
}

要解决此问题,您还需要定义相反的内容。

@Mapper(uses = { CustomerService.class })
public interface FirstDomainMapper extends EntityMapper<FirstDomainDTO, FirstDomain> {

    @Mapping(source = "customers", target = "customers")
    FirstDomainDTO toDto(FirstDomain firstDomain);

    @Mapping(source = "customers", target = "customers")
    FirstDomain toEntity(FirstDomainDTO firstDomainDTO);

    default String fromCustomer(Customer customer) {
        return customer == null ? null : customer.getCode();
    }

    default Customer fromStringToCustomer(String customerId) {
        // Implement your custom mapping logic here
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-22
    • 2021-04-29
    • 1970-01-01
    • 1970-01-01
    • 2012-06-25
    • 2020-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多