有没有办法专门告诉Orika何时映射给定项目?例如,我希望Orika仅在A.getLastModifiedTime() > B.getLastModifiedTime
时映射我的项目。有没有办法以某种方式配置它?
答案 0 :(得分:0)
这应该可以解决问题:
mapperFactory.classMap(A.class, B.class)
.customize(new CustomMapper<A,B>() {
if(A.getLastModifiedTime() > B.getLastModifiedTime()){
A.getLastModifiedTime() == B.getLastModifiedTime();
}
}).register();
答案 1 :(得分:0)
根据运行时条件,您可以使用Orika过滤器来映射或不映射字段。最简单的方法是扩展Orika的NullFilter。
class MyFilter<A,B> extends NullFilter<A,B> {
private myCondition(S source, D dest) {
...
}
public <S extends A, D extends B> boolean shouldMap(final Type<S> sourceType, final String sourceName, final S source, final Type<D> destType, final String destName,
final MappingContext mappingContext) {
if (destName.equals("lastModifiedTime") && myCondition(source, dest)) {
return false;
}
return true;
}
}