如何配置模型映射器以跳过目标中的嵌套属性
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 =>; target.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());
}
});
没有成功。
我希望有一个通用的解决方案,可以阻止模型映射器映射目标对象中的任何嵌套对象的属性。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您是否可能缺少一些预先存在的配置?你的例子对我来说效果很好。
无论如何,当您使用
LOOSE
匹配策略时,这种情况大多数都会发生。您可以通过将匹配策略显式设置为
STANDARD
或STRICT
来修复此问题。或者
检查docs 了解有关匹配策略、命名约定、默认配置等的更多信息。
Could you perhaps be missing some preexisting configuration? Your example works just fine for me.
Anyway, such things happen mostly when you are using
LOOSE
matching strategy.You can fix it by explicitly setting matching strategy to
STANDARD
orSTRICT
.Or
Check the docs for additional information on matching strategies, naming conventions, default configurations, etc.