当前位置: 首页 > 知识库问答 >
问题:

如何配置modelmapper以跳过目标中的嵌套属性

狄宇
2023-03-14
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将映射源代码。两个=

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());
      }
    });

没有一个奏效。

我希望有一个通用的解决方案,可以停止模型映射器在目标对象中映射任何嵌套对象的属性。


共有1个答案

耿志义
2023-03-14

你可能错过了一些预先存在的配置吗?你的例子对我来说很好。

无论如何,这样的事情大多发生在使用LOOSE匹配策略时。

modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.LOOSE);

您可以通过显式地将匹配策略设置为STANDARDSTRICT来修复它。

modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STANDARD);

modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);

查看文档,了解有关匹配策略、命名约定、默认配置等的更多信息。

 类似资料:
  • 我有两个类。请求DTO和实体。我想将请求DTO映射到实体。在这种情况下,我想手动插入实体属性之一,这意味着属性不在请求DTO中。如何使用模型映射器实现这一点。 但这不起作用,它说它不能将字符串转换为长字符串。我要求解决这个问题,或者采取更好的方法。

  • 一个非常简单的问题,烟熏我的情况下的漏洞。我试图跳过userDTO的setPassword每次当我转换用户- 在ModelMapper的这一行,我得到了NullPointerException- 我知道“源”映射不存在,但我的问题是,既然我要求它根本不设置密码,它为什么还要关心它。 抱歉,我想我缺少ModelMapper的一些基础知识。谢谢你的时间和帮助。 得到ModelMapper的帮助,跳过一

  • 这是我的DTO: 这是我的实体: 我想配置我的ModelMapper将Tag#id映射到TagVolumeDTO#idTag。这可能吗?

  • 但我得到了这个: 我的榜样。 我在一个模型中有两个类: ***数据库中的firstName和lastName为空。 当firstName和lastName为null时,ModelMapper将my ClientDto设置为null。 映射后OrderDto的输出:“OrderDto(ordernumber=123,ordersize=10cm,orderdescription=some order

  • 当我试图使用ModelMapper将嵌套的java对象转换为嵌套的DTO时,我遇到了一个问题。在父DTO对象中,子DTO为null。以下是代码片段。 实体类: DTO的课程: 这是映射器代码: 输出: 输出用户DTO:UserDTO[名称=xyz,地址=null,产品=null] 在这里,我想将用户实体转换为UserDTO-dto。我得到了地址和产品DTO的空值。我在这里到底缺少什么?有人知道吗?