如何解决Orika Mapper:如何从映射中排除子类中的父字段
我必须用 Orika 映射一些类,我需要在子类映射中从父类中排除一个字段,但它不起作用。 这是一个测试用例:
class TestOrikaInheritance extends Specification {
MapperFactory mapperFactory
void setup() {
mapperFactory = new DefaultMapperFactory.Builder().useAutoMapping(true).mapNulls(false).build()
mapperFactory.classMap(ForMapper.Parent.class,ForMapper.ParentModel.class).byDefault().register()
mapperFactory.classMap(ForMapper.Child.class,ForMapper.ChildModel.class)
.exclude('field1')
.exclude('field4')
.byDefault().register()
}
def "test inherited fields mapping"() {
def child = new ForMapper.Child(field1: 'f1',field2: 'f2',field3: 'f3',field4: 'f4')
ForMapper.ChildModel childModel = mapperFactory.getMapperFacade(ForMapper.Child.class,ForMapper.ChildModel.class).map(child)
expect:
childModel.field2 == 'f2'
childModel.field3 == 'f3'
childModel.field4 == null
childModel.field1 == null
}
}
带有bean的类(ForMapper.java):
public class ForMapper {
public static class Parent {
private String field1;
protected String field2;
private String field3;
public String getField1() {
return field1;
}
public void setField1(String field1) {
this.field1 = field1;
}
public String getField2() {
return field2;
}
public void setField2(String field2) {
this.field2 = field2;
}
public String getField3() {
return field3;
}
public void setField3(String field3) {
this.field3 = field3;
}
}
public static class Child extends Parent {
private String field4;
private List<String> list2;
public String getField4() {
return field4;
}
public void setField4(String field4) {
this.field4 = field4;
}
public List<String> getList2() {
return list2;
}
public void setList2(List<String> list2) {
this.list2 = list2;
}
}
public static class ParentModel {
private String field1;
protected String field2;
private String field3;
public String getField1() {
return field1;
}
public void setField1(String field1) {
this.field1 = field1;
}
public String getField2() {
return field2;
}
public void setField2(String field2) {
this.field2 = field2;
}
public String getField3() {
return field3;
}
public void setField3(String field3) {
this.field3 = field3;
}
}
public static class ChildModel extends ParentModel {
private String field4;
public String getField4() {
return field4;
}
public void setField4(String field4) {
this.field4 = field4;
}
}
}
当我运行测试时,'field4' 未映射且为空,但 'field1' 已映射。
请帮我修复映射器以从父类映射字段 'field1' 中排除。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。