class A { class ADto {
int id; -> int id;
List<B> b; List<BDto> b;
} }
class B { class BDto {
int id; -> int id;
C c; CDto c;
} }
转换A -> ADto
时,我想跳过C -> CDto
的映射。
我的印象是,只要B -> BDto
之间发生转换,下面的映射器就会起作用,但似乎并非如此;所以下面的映射器在转换(A -> ADto)
...
class BMap extends PropertyMap<B, BDto> {
@Override
protected void configure() {
skip(destination.getC());
}
}
实现这个目标的方法应该是什么?
答案 0 :(得分:1)
在这种情况下,您可以有两种不同的选择。
第一个是使用ModelMapper实例来处理这个特殊情况,它在length
映射中添加了PropertyMap skipe c
。所以你必须添加它:
B -> BDto
另一种选择是使用转换器,因此在您的情况下,您应该ModelMapper mapper = new ModelMapper();
mapper.addMappings(new BMap());
转换Converter
,然后在B -> BDto
A -> ADto
中使用它:
PropertyMap
然后在PropertyMap中使用Converter:
public class BToBDto implements Converter<B, BDto> {
@Override
public BDtoconvert(MappingContext<B, BDto> context) {
B b = context.getSource();
BDto bDto = context.getDestination();
//Skip C progammatically....
return bDto ;
}
}