如何配置 modelmapper 以跳过目标中的嵌套属性
How to configure modelmapper to skip nested properties in destination
Source{
String one;
String two;
}
Destination{
String one;
Child child;
}
Child{
String two;
}
main() {
ModelMapper modelMapper = new ModelMapper();
// what configurations to set here?
Source source = new Source("one=1", "two=2");
Destination desiredResult = new Destination();
desiredResult.setOne("one=1");
Destination mappedResult = modelmapper.map(source, Destination.class )
assertEquals(mappedResult, desiredResult );
}
问题是 modelmapper 会映射 source.two => destination.child.two
,这是我不想要的。我试过像
这样的方法
1. modelMapper.getConfiguration().setPreferNestedProperties(false);
2. modelMapper.getConfiguration().setAmbiguityIgnored(true);
3. modelMapper.getConfiguration().setImplicitMappingEnabled(false);
4. modelMapper.addMappings(new PropertyMap<Source, Destination>() {
@Override
protected void configure() {
skip(destination.getChild());
skip(destination.getChild().getTwo());
}
});
None 成功了。
我希望有一个通用的解决方案,可以停止模型映射器将任何嵌套对象的属性映射到目标对象中。
您是否可能遗漏了一些预先存在的配置?你的例子对我来说很好用。
反正这种事情多半是在你使用LOOSE
匹配策略的时候发生的
modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.LOOSE);
您可以通过将匹配策略显式设置为 STANDARD
或 STRICT
来修复它。
modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STANDARD);
或
modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
查看 docs 以获取有关匹配策略、命名约定、默认配置等的其他信息
Source{
String one;
String two;
}
Destination{
String one;
Child child;
}
Child{
String two;
}
main() {
ModelMapper modelMapper = new ModelMapper();
// what configurations to set here?
Source source = new Source("one=1", "two=2");
Destination desiredResult = new Destination();
desiredResult.setOne("one=1");
Destination mappedResult = modelmapper.map(source, Destination.class )
assertEquals(mappedResult, desiredResult );
}
问题是 modelmapper 会映射 source.two => destination.child.two
,这是我不想要的。我试过像
1. modelMapper.getConfiguration().setPreferNestedProperties(false);
2. modelMapper.getConfiguration().setAmbiguityIgnored(true);
3. modelMapper.getConfiguration().setImplicitMappingEnabled(false);
4. modelMapper.addMappings(new PropertyMap<Source, Destination>() {
@Override
protected void configure() {
skip(destination.getChild());
skip(destination.getChild().getTwo());
}
});
None 成功了。
我希望有一个通用的解决方案,可以停止模型映射器将任何嵌套对象的属性映射到目标对象中。
您是否可能遗漏了一些预先存在的配置?你的例子对我来说很好用。
反正这种事情多半是在你使用LOOSE
匹配策略的时候发生的
modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.LOOSE);
您可以通过将匹配策略显式设置为 STANDARD
或 STRICT
来修复它。
modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STANDARD);
或
modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
查看 docs 以获取有关匹配策略、命名约定、默认配置等的其他信息