gpt4 book ai didi

java - 在使用带有类型映射的 moddelmapper 时如何解决不兼容的类型(不可转换)

转载 作者:行者123 更新时间:2023-12-02 05:14:49 24 4
gpt4 key购买 nike

我正在尝试将我的实体映射到我的 DTO。根据我的知识,我正在尝试不同的方法。我成功地使用了带有隐式映射的映射,同时在使用带有配置方法的 PropertyMap 时也使用了显式映射。

现在我正在尝试使用 TypeMap 进行显式映射。这最后一项我无法上类。

结合 Modelmapper 的入门,我使用了此线程中的答案作为示例,How to use Explicit Map with Java 8 and 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);
}

上面的 block 是我的代码示例,不起作用。

  • 使用 setId 时出现错误:不兼容的类型:V 无法转换为 Long。
  • setB 出现错误:不兼容的类型:V 无法转换为 String。
  • setActive 出现错误:不兼容的类型:V 无法转换为 boolean 值。

如何使此示例与 TypeMap 一起使用?

最佳答案

通过不断尝试,我自己找到了答案。

我必须使用类而不是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);
}

关于java - 在使用带有类型映射的 moddelmapper 时如何解决不兼容的类型(不可转换),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56303049/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com