我已经在ModelMapper转换中成功使用了Provider,但我偶然发现了一个奇怪的情况 . 我注意到,该供应商正在考虑只为超越的转变,例如“第一级”的对象:我有两个层次:1)TipoConsultarProcessoResposta,TipoProcessoJudicial和TipoDocumento 2日)ConsultarProcessoResposta,ProcessoJudicial这份执行和已TipoConsultarProcessoResposta一个TipoProcessoJudicial反过来有一个TipoDocumento列表,第二个层次结构重新包含第一个 . 我正在从第一个层次结构转换为第二个层次结构,并且提供程序正在为TipoDocumento到Documento转换正常工作,但是它被TipoProcessoJudicial转换为ProcessoJudicial时被忽略 .

以下是代码的相关部分:

modelMapper = new ModelMapper();
    modelMapper.getConfiguration().setMatchingStrategy(STRICT);
    modelMapper.addMappings(new DocumentoPropertyMap()).setProvider(documentoProvider);
    modelMapper.addMappings(new ProcessoJudicialPropertyMap()).setProvider(processoJudicialProvider);

    ConsultarProcessoResposta resposta = modelMapper.map(tipoConsultarProcessoResposta, ConsultarProcessoResposta.class);

DocumentoPropertyMap extends PropertyMap<TipoDocumento, Documento> and ProcessoJudicialPropertyMap extends PropertyMap<TipoProcessoJudicial, ProcessoJudicial>.

问题是正在调用DocumentoProvider但是没有调用ProcessoJudicialProvider . ModelMapper尝试调用失败的全局提供程序,并通过构造函数进行实例化 .