簡體   English   中英

在將moddelmapper與typemap一起使用時,如何解決不兼容的類型(不可轉換)

[英]How can I solve the incompatible types (not convertible) while using the moddelmapper with a typemap

我正在嘗試將我的實體映射到我的DTO。 對於我的知識,我正在嘗試不同的方法。 我成功地使用了帶有隱式映射的映射,也使用了帶有configure方法的PropertyMap時的顯式映射。

現在我正在嘗試使用TypeMap進行顯式映射。 最后一個我無法上班。

與Modelmapper的入門一起,我在這個線程中使用了答案作為示例, 如何在Java 8和ModelMapper中使用顯式映射?

static ResponseB convertBEntityToDtoExplicitTypeMap(ModelB modelB){
    ModelMapper modelMapper = new ModelMapper();
    TypeMap<ModelB, ResponseB> typeMap = modelMapper.createTypeMap(ModelB.class, ResponseB.class);

    typeMap.addMappings(mapping -> {
        mapping.map(modelB.getId(), ResponseB::setId);
        mapping.map(modelB.getBankaccountName(), ResponseB::setB);
        mapping.map(modelB.isActive(), ResponseB::setActive);
    });

    return modelMapper.map(modelB, ResponseB.class);
}

上面的塊是我的代碼示例,不起作用。

  • 使用setId我有錯誤:不兼容的類型:V不能轉換為Long。
  • setB有錯誤:不兼容的類型:V不能轉換為String。
  • setActive有錯誤:不兼容的類型:V不能轉換為布爾值。

我怎么能讓這個例子與TypeMap一起工作?

通過不斷的嘗試,我自己想出來了。

我不得不使用class而不是mapping.map中的對象

static ResponseB convertBEntityToDtoExplicitTypeMap(ModelB modelB){
    ModelMapper modelMapper = new ModelMapper();
    TypeMap<ModelB, ResponseB> typeMap = modelMapper.createTypeMap(ModelB.class, ResponseB.class);

    typeMap.addMappings(mapping -> {
        mapping.map(ModelB::getId, ResponseB::setId);
        mapping.map(ModelB::getBankaccountName, ResponseB::setB);
        mapping.map(ModelB::isActive, ResponseB::setActive);
    });

    return modelMapper.map(modelB, ResponseB.class);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM