在将 moddelmapper 与类型映射一起使用时,如何解决不兼容的类型(不可转换)
How can I solve the incompatible types (not convertible) while using the moddelmapper with a typemap
我正在尝试将我的实体映射到我的 DTO。对于我的知识,我正在尝试不同的方法。
我成功地使用了一个带有隐式映射的映射,在使用带有配置方法的 PropertyMap 时也是一个显式映射。
现在我正在尝试使用 TypeMap 进行显式映射。最后一个我没法上班。
连同从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 不可转换为字符串。
- 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);
}
我正在尝试将我的实体映射到我的 DTO。对于我的知识,我正在尝试不同的方法。 我成功地使用了一个带有隐式映射的映射,在使用带有配置方法的 PropertyMap 时也是一个显式映射。
现在我正在尝试使用 TypeMap 进行显式映射。最后一个我没法上班。
连同从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 不可转换为字符串。
- 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);
}